全站搜索

Thinkphp3.2如何使用微信扫码实现网页登录的功能

网站开发 380

随着聊天工具的不断发展,如今在众多的聊天工具中微信一骑绝尘,也就是基本每个人的手机都会有微信软件,所以微信扫码登录网页端比新浪,QQ等第三方平台登录使用都更加广泛。

 

 

微信扫码网页端实现登录的原理,是利用公众号页面的微信登录功能,不过会一些代码的增加和改动,使手机端与PC端能形成数据的联动,下面就着重讲一下改动和增加代码的内容。

第一步,生成一个二维码,如下图所示:

即用手机扫码该二维码后,首次登录需获取用户的信息,然后网页直接登录,二维码是一个跳转的URL链接地址,内容如下:

//随机字符串,用于联运PC与手机的媒介

$rand_code = ‘M’.time().rand(‘100001′,’999999’);

//登录后返回的地址

$REDIRECT_URI = ‘域名/Weixin/login_return?rand_code=’.$rand_code;

//微信登录地址,也是二维码地址

$scope=’snsapi_userinfo’;//表示需要授权

$url=’https://open.weixin.qq.com/connect/oauth2/authorize?appid=’.$APPID.’&redirect_uri=’.urlencode($REDIRECT_URI).’&response_type=code&scope=’.$scope.’&state=1#wechat_redirect’;//登录验证

 vendor(“phpqrcode.phpqrcode”);//调用二维码类

$level = ‘L’;// 点的大小:1到10,用于手机端4就可以了

$size = 7;/* 二维码的大小,下面注释了把二维码图片保存到本地的代码,如果要保存图片,用$fileName替换第二个参数false*/

$fileName =’Uploads/qcode/2.png’; // 生成的文件名

$QRcode = new \QRcode();

 $QRcode->png($url, $fileName, $level, $size);//生成二维码

 $this->qrcode =  .’/’.$fileName;//二维码路径

$this->rand_code = $rand_code;//将随机数传递到扫码的页面

如上所示,$url就是二维码的内容,扫码后手机就浏览$url,手机确认授权登录后,就会返回$REDIRECT_URI的地址,方法如下:

function login_return(){

$rand_code = I(‘get.rand_code’,”);//PC生成的随机数

$appid = C(‘APPID’);

$secret = C(‘SECRET’);

$code = $_GET[“code”];

//获取用户的access_token和openid

$get_token_url = ‘https://api.weixin.qq.com/sns/oauth2/access_token?appid=’.$appid.’&secret=’.$secret.’&code=’.$code.’&grant_type=authorization_code’;

$data = fopen($get_token_url, “rb”);

$data = stream_get_contents($data);

@fclose($data);

$json_obj = json_decode($data,true);

 

//根据openid和access_token查询用户信息

 $access_token = $json_obj[‘access_token’];

 $openid = $json_obj[‘openid’];

$get_user_info_url = ‘https://api.weixin.qq.com/sns/userinfo?access_token=’.$access_token.’&openid=’.$openid.’&lang=zh_CN’;

 $data2 = fopen($get_user_info_url, “rb”);

$data2 = stream_get_contents($data2);

@fclose($data2);

//解析json

$info = json_decode($data2,true); //$info即是用户信息的数组



 

上面是代码,原理:手机扫码登录后,获取用户的信息,如果昵称,头像,地区等,最重要的是openid,根据openid查询会员表有没有存在,如果存在则将随机数$rand_code更新到会员表member的rand_code里,如果不存在,则添加一行会员信息,添加的内容是用户的昵称,头像,openid, rand_code,因为rand_code已经保存在会员表的,所以PC网页端用定时执行的函数,每隔几秒查询会员表中是否存在rand_code,如果存在则登录成功,并且获取该会员的信息,PC端的JS如下:

 

 

微信登录的功能比较简单,主要是知道原理是怎么实现的就可以了。

 

上一篇: 下一篇:

相关推荐

  • 为何家电公司都要做企业商城?

    338

    我们发现这样一个现象——家电类企业都建设有企业商城,即便在入驻了第三方电商平台之后,还是会上线一个独立的企业商城。规律验证?是否存在这一规律呢?我们可以进行论证。  服装、食品、家电等属于电商平台销量位于前排的行业,这类企业也积极拥抱电商,对于...

    查看全文
  • 招聘平台系统开发设计方案

    373

    关于系统设计说明书概览 目录 1. 系统总体设计 2 1.1 建站的目的 2 1.2用户界面约束 2 1.3系统体系结构 2 1.4系统功能结构 3 2. 程序模块设计说明 5 2.1 用户注册(F1) 5 2.2会员登陆(F2) 5 2.3信息分类(F3) 6 2.4同城搜索(F4) 7 2.5留言簿(F5)...

    查看全文
  • 视频类网站视频的排版优化

    389

    包括影视网站、在线教育网站、短视频网站等在内的网站,都拥有大量的视频内容。这些视频内容是如何呈现的呢?排版有无优化的空间呢?   视频网站排版的特点我们观察到,目前视频排版有如下几个共性特点:特点1:矩形排版。视频都是矩形的,也按照方阵的形式进...

    查看全文
  • 关键字排名由这三方面所决定-你知道吗?

    871

        网站SEO优化之中很重要的一种方式就是利用搜索引擎的排列算法,来不断提升自己网站跟关键词的关联度,从而使搜索结果之中包含自己的网站。甚至出现在都做结果排列的前沿,成功吸引用户进入网站之中。那么关键词排名究竟由什么决定呢?   &nbs...

    查看全文
展开更多