全站搜索

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

网站开发 319

随着聊天工具的不断发展,如今在众多的聊天工具中微信一骑绝尘,也就是基本每个人的手机都会有微信软件,所以微信扫码登录网页端比新浪,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如下:

 

 

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

 

上一篇: 下一篇:

相关推荐

  • 教你如何在网站页面上插入youtube视频

    315

    随着社会的快速发展,5G网络带来的流量红利,还有摄像技术的进一步提高,人的审美也由静态变成动态,所以网站上的视频也越来越重要,现在的网站都在包含有视频,至少包含一个公司介绍的视频,或者包含产品介绍的视频。一般情况,我们国内的客户网站的视频都是放在阿...

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

    313

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

    查看全文
  • 如何做一个“好”网站

    345

    众所周知,互联网从八十年代末九十年代初引进中国,出现了如瀛海威等红极一时的互联网公司。而建站行业伴随着互联网经济的生根发芽,也有30多个年头了。目前我国的实体企业都在面临着数字化转型升级,我们建站行业在这个大趋势的背景下,也要跟得上这个时代的发展。 ...

    查看全文
  • 5G时代,多媒体的变化,设计该如何把握大时代的发展模式

    259

    随着5G时代的到来,我们的生活也越来越讲究效率和高效。如果说4G是一个颠覆性的概念,那么5G将会是个革命性的发展,这不仅仅会给我们生活更多惊喜和挑战追求,更会在我们工作上带来更多变化。那在这样快餐时代,我们要怎样是展示信息内容给群众用户更容易去接受?继...

    查看全文
展开更多