文档章节

ecshop第三方登陆微信登录

hfisop
 hfisop
发布于 2017/04/05 10:59
字数 644
阅读 68
收藏 0
点赞 0
评论 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机制)

© 著作权归作者所有

共有 人打赏支持
hfisop
粉丝 9
博文 136
码字总数 76717
作品 0
海淀
程序员
第三方支付接口现号,第三方支付接口对接,第三方支付接口申请

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

alaimaro
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
0
1
ECSHOP后台密码忘记了怎么办

在ECSHOP论坛里或ECSHOP技术交流群里, 经常看到一些ECSHOP用户(特别是一些新手朋友)由于各种原因将后台管理密码丢失了或者被别人恶意篡改了, 碰到这种情况该怎么办呢? 因为ECSHOP的管理...

Android1989
2014/08/11
0
0
如何禁用ECSHOP缓存,如何关闭ECSHOP缓存

熟悉ECSHOP的老站长们都知道,ECSHOP是有缓存机制的。 ECSHOP的缓存机制从一定程度上可以减少ECSHOP反复读取数据库的几率,从而一定程度上降低服务器负担,提高访问速度。 但是启用缓存机制,...

Surjur
2015/04/30
0
0
在ecshop商品列表页加一个购买数量输入框

我们在使用ecshop的时候,特别是批发站。 很多时候不能在ecshop商品列表页输入购买数量,是非常不方便的。 现在如果一次性购买好几个商品,十分的不方便,只有在ecshop的商品详细页面才能输入...

路边拾草人
2011/12/14
0
2
ecshop 实现“精品、新品、热销”板块出现选项卡效果的方法

最近做一个网络商城,直接使用ecshop的免费模板,懒得重新做,ecshop建站多日了,一直想在主页的板块中建网页选项卡鼠标经过自动切换效果,百度搜索这方面的内容也没找到合适的,今天一实验,...

小果果x
2014/12/03
0
0
ecshop网店前对ecshop修改的讲究

如何开ecshop网店,这个问题非常重要,用ecshop开网店的朋友都应该注意,一个站的运营,在运营前的二次开发当然重要。也格外重要,但是每个 人都应该清楚,ecshop只适合做中小型网店,也就是说...

Android1989
2014/08/14
0
0
ecshop语言包lang的加载原理

首先大家要明白的一点是:ecshop目录下的languages目录,这个就是ecshop语言包所在目录。 ecshop默认的语言包为中文简体即zh_cn目录. 语言包的载入过程都是通过ecshop的init.php中的require...

路边拾草人
2011/12/16
0
0
Ecshop商品属性无法正常使用价格排序的问题

默认Ecshop商品属性无法正常使用价格排序的问题,正常的显示如下: 其实这个是Ecshop数据库设计时遗留的问题,和sql的order by无关,默认情况下Ecshop的属性价格字段采用了varchar,所以排序...

首席技师
2014/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JAVA知识点随心记

1.Switch case具体的支持类型? Q:支持byte、short、char、int基本类型,枚举类型和String类型(JDK7以上支持),四种基本类型的包装类型也支持,但是原因在于触发了自动拆箱,将包装类型拆成了基本...

勤奋的蚂蚁
13分钟前
0
0
NoSQL

一、NoSQL介绍 NoSQL属于非关系型数据,mysql属于关系型数据库。 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当数据量非常大的时候...

人在艹木中
18分钟前
0
0
第17章MySQL主从配置

mysql安装总结 mysql主从准备工作: 准备两台机器,每台机器安装msyql服务,并启动mysql服务 mysql详细安装 1.首先下载二进制免编译的包,下载到/usr/local/src/目录下 2.解压压缩包 3.解压完...

Linux学习笔记
21分钟前
0
0
Redis高可用及分片集群

一、主从复制 使用异步复制 一个服务器可以有多个从服务器 从服务器也可以有自己的从服务器 复制功能不会阻塞主服务器 可以通过服务功能来上主服务器免于持久化操作,由从服务器去执行持久化...

Java大蜗牛
25分钟前
0
0
前端面试题汇总

最近在复习,准备找工作了,特此总结一下前端的相关知识。 1.获取浏览器URL中查询字符的参数: function getQuery(name){    var reg = new RegExp("(^|&)"+name+"=([^&]*)"(&|$));...

凛冬来袭
59分钟前
0
0
可持续发展的学习道路

与其要求别人,不如提升自己 内心渴望进步 经常做出改变现有模式,不断学习 寻找资源,整合资源,不断熟练这种模式 渠道很重要 先打开新世界的航路

狮子狗
今天
0
0
apollox-lua开源项目 示例codepen2

今天在示例上增加了几个功能, 首先添加js array的标准库。 所有js array的方法目前都支持了。 添加查看code模式。 点击查看code可以看到生成的lua代码。默认web模式需要把标准库连接进来, ...

钟元OSS
今天
0
0
javascript性能优化之避免重复工作

javascript最重要也最根本的性能优化标准之一是避免工作,避免工作又包括两点,第一,不做不必要的工作,第二,不做重复的已经完成的工作。第一部分可以通过代码重构完成,第二部分不做重复的...

老韭菜
今天
0
0
缓存穿透、并发和雪崩那些事

0 题记 缓存穿透、缓存并发和缓存雪崩是常见的由于并发量大而导致的缓存问题,本文讲解其产生原因和解决方案。 缓存穿透通常是由恶意攻击或者无意造成的;缓存并发是由设计不足造成的;缓存雪...

Java填坑之路
今天
1
0
项目jar包管理构建工具---Maven

一、what is Maven? 我们来寻找一下官网,里面介绍了maven到底是什么?下面一句话就有讲解到:Apache Maven is a software project management and comprehension tool. Based on the conc...

一看就喷亏的小猿
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部