文档章节

ecshop第三方登陆微信登录

hfisop
 hfisop
发布于 2017/04/05 10:59
字数 644
阅读 312
收藏 0

1.去微信开发平台申请App Key。

2.前台添加微信登录连接。在user_passport.dwt文件中添加<a href="https://open.weixin.qq.com/connect/qrconnect?appid=XXXXXX&response_type=code&scope=snsapi_login&redirect_uri=http%3A%2F%2Fwww.doute365.com%2Fuser.PHP%3Fact%3Dweixin&state=XXXXXXXX"><img height="24px" width="23px" src="images/weixin.gif">&nbsp;微信
</a>;其中appid=XXXXXX把XXXXXX替换成你的appid,state=XXXXXXXX把XXXXXX替换成你的AppSecret,redirect_uri=http%3A%2F%2Fwww.doute365.com%2Fuser.php%3Fact%3Dweixin替换成你的回调地址(注意其中转码的url,不能直接写url)

3.回调程序中写对应的处理函数

if(isset($_REQUEST['code'])&&isset($_REQUEST['state'])&&$action == 'weixin'){
    include_once(ROOT_PATH . 'includes/website/jntoo.php');
    
    $code = $_GET['code'];
    $state = $_GET['state'];
    //xxxx修改成自己的appID和AppSecret
    $appid = 'XXXXX';
    $appsecret = 'XXXXXXX';

    if (empty($code)) 
    show_message('授权失败', '返回首页', '', 'wrong');
    
    $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
    $token = json_decode(file_get_contents($token_url));
    if (isset($token->errcode)) 
    {
        show_message($token->errmsg, '返回首页', '', 'wrong');
    }
    $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token;

    $access_token = json_decode(file_get_contents($access_token_url));
    if (isset($access_token->errcode)) 
    {
        show_message($access_token->errmsg, '返回首页', '', 'wrong');
    }
    $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN';

    $user_info = json_decode(file_get_contents($user_info_url));
    if (isset($user_info->errcode)) {
        show_message($user_info->errmsg, '返回首页', '', 'wrong');
    }
    
    setcookie('user_info',$user_info);
    $info = $user_info;
    $type='weixin';
    $info_user_id = $type .'_'.$info->openid; //  加个标识!!!防止 其他的标识 一样  // 以后的ID 标识 将以这种形式 辨认
    $info->nickname= str_replace("'" , "" ,$info->nickname); 
    
    
    $sql = 'SELECT user_name,password,aite_id FROM '.$ecs->table('users').' WHERE aite_id = \''.$info_user_id.'\' OR aite_id=\''.$info->openid.'\'';
    
    $count = $db->getRow($sql);
    $login_name = $info->nickname;
    if(!$count)   // 没有当前数据
    {
        if($user->check_user($info->nickname))  // 重名处理
        {
            $info->nickname = $info->nickname.'_'.$type.(rand()*1000);
        }
        $login_name = $info->nickname;
        $user_pass = $user->compile_password(array('password'=>$info->openid));
        $sql = 'INSERT INTO '.$ecs->table('users').'(user_name , password, aite_id , sex , reg_time , user_rank , is_validated) VALUES '.
                "('$info->nickname' , '$user_pass' , '$info_user_id' , '$info->sex' , '".gmtime()."' , '0' , '1')" ;
        $db->query($sql);
    }
    else
    {
        $login_name = $count['user_name'];
        $sql = '';
        if($count['aite_id'] == $info->openid)
        {
            $sql = 'UPDATE '.$ecs->table('users')." SET aite_id = '$info_user_id' WHERE aite_id = '$count[aite_id]'";
            $db->query($sql);
        }
    }
    
    
    $user->set_session($login_name);
    $user->set_cookie($login_name);
    update_user_info();
    
    $redirect_url =  "http://".$_SERVER["HTTP_HOST"].str_replace("user.php", "index.php", $_SERVER["REQUEST_URI"]);
    header('Location: '.$redirect_url);
}

 

返回参数详解:

 

参数

描述

openid 用户的唯一标识
nickname 用户昵称
sex 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province 用户个人资料填写的省份
city 普通用户个人资料填写的城市
country 国家,如中国为CN
headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
privilege 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制)

© 著作权归作者所有

上一篇: ectouch之文件结构
下一篇: MyISAM与InnoDB区别
hfisop
粉丝 9
博文 133
码字总数 74902
作品 0
海淀
程序员
私信 提问
ECShop 2.7.2 最新任意用户登陆漏洞

由于最近项目需要, 查看了下商派最新发布的ECShop 2.7.2正式版的源代码, 没想到在看到第二个文件时就发现了一处比较明显, 且低级漏洞。这个漏洞可以让任何人以任何用户身份登录到ECShop前台!...

沱长
2010/05/05
5.9K
5
ecshop微信授权绑定登陆

有大神做过ecshop微信登陆了的,或者不一定是ecshop,其他的php网站都可以的。 我不是很清楚会员是怎么绑定的。 不知有木有大神可以发份源码我研究下(gyrate360@qq.com)。 谢谢。...

旋转360
2014/11/10
5.1K
1
第三方支付接口现号,第三方支付接口对接,第三方支付接口申请

第三方支付公司太多,到目前为止一共有5批206家拿牌支付公司:国付宝,支付宝,环迅,汇潮,易宝,快钱,智付,等等不管您从事与哪家,我们都必须面对这些事实,每家支付公司都有自己的优势跟...

alaimaro
2018/04/26
0
0
ecshop 完美解决动态ip登录超时和购物车清空问题

ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-05-06 前一段时间,ECSHOP开发中心的一个客户说自己的ecshop网店出了状况,就是有时候登录的时候会自动退出。而且购物车也没规律的会清...

thinkyoung
2015/06/24
0
0
ECSHOP登录自动退出问题解决

最近进行ecshop二次开发,可以说是碰到了很多问题,最让人苦恼的是ecshop会员登录和管理员登录不了后台,或者是登录之后就自动退出。 一般这种情况在本地是好好的,为什么上传到服务器就不行...

skq
2013/06/08
7.4K
1

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
29分钟前
4
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
4
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
13
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部