全站搜索

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

网站开发 382

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

 

 

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

 

上一篇: 下一篇:

相关推荐

  • 网站建设公司关于企业网站报价方案明细

    398

    一般做网站,找到网站建设公司,一般稍微正规的公司都会给你一份网站报价方案明细,其实,每个建站公司都有自己的网站报价方案模板,而且针对每个类型的网站模板不一样,如企业网站报价方案、商城网站报价方案、门户网站报价方案、微信网站报价方案、旅游网站报价方...

    查看全文
  • 网站开发公司怎么选?要从哪些方面考虑?

    350

    选择网站开发公司重要吗?在这里,方维网络郑重的告诉您,很重要,因为网站制作不止是一次性的工作,还有后续的维护,以及二次升级改版。方维网络经常接到客户问,我的网站在其他公司做的,问是否可以在你们那里维护?答案是否定的,因为每个公司开发方式不一样,质...

    查看全文
  • 亚马逊s3-OSS存储文件上传读取接口

    397

    专业做网站的都知道,OSS存储是个好东西,如果你想网站上放个视频,如果采用第三方优酷、土豆视频,有很多广告,放在自己网站上非常不友好。如果直接放在网站服务器,则占用很多带宽,增加服务器负担。所以OSS存储的出现,解决了这个问题,速度快又不占用服务器带宽...

    查看全文
  • 建站这门生意还能做吗?建站公司应持三大心态!

    334

    关于对企业做网站这一行业,我们观察到两个现象——第一,退出建站行业的企业和退出建站业务的企业,在越来越多。第二,云建站逐渐成势,越来越多的企业选择云建站。 这就很引人担忧——建站这门生意还能做吗? 建站生意 任何一项生意的前提是——有买有卖。以建站为例...

    查看全文
展开更多