跟着谈天工具的持续生长,现在在浩瀚的谈天工具中微信一骑绝尘,也就是基本每集团的手机都邑有微信软件,以是微信扫码登录网页端比新浪,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以下:
微信登录的功用对比简单,首如果晓得事理是如何完成的就能够了。