当前位置: 首页 > 后端技术 > PHP

微信小程序实现PC网站扫码授权登录获取用户信息(头像,昵称)

时间:2023-03-29 22:33:19 PHP

*{保证金:0;填充:0;}#ewm{宽度:200px;保证金:50px自动10px;}#ewmimg{宽度:200px;}h2{颜色:#333;文本对齐:居中;}#shujuliu{width:500px;身高:300pX;背景:#000;边距:50px自动;填充:20px20px;border-top:20pxsolid#ccc;}前言目前微信扫码登录有两种方式:1.微信服务号扫码网页授权登录2.微信开放平台Oauth2.0授权登录以上两种方式微信认证缺一不可,都需要支付300元认证才能获得开发能力。于是想到了微信小程序。个人开发者无需认证即可获取用户信息,授权登录,简单实现相同功能。流程1、PC端生成小程序代码,携带唯一参数scene2,微信扫码,进入小程序,获取唯一参数scene,小程序授权获取用户信息(头像,昵称)3.确认登录,将当前获取的用户信息(头像、昵称、场景)一起插入到注册用户数据库中。4、注册后网页保持连接状态(ajax轮询或websocket)获取扫码状态。如果小程序端点击确认登录,PC网页会显示登录成功,并显示头像和昵称。Demo体验点击体验后台代码xcx_login.phplunxun.php'success','nickName'=>$nickname,'avatarUrl'=>$headimg),true);}else{echojson_encode(array('result'=>'loading'),true);}//断开数据库连接mysql_close($con);?>creatqrcode.php微信小程序扫码登录*{保证金:0;填充:0;}#ewm{宽度:200px;保证金:50px自动10px;}#ewmimg{宽度:200px;}h2{颜色:#333;文本对齐:居中;}#shujuliu{width:500px;身高:300pX;背景:#000;边距:50px自动;填充:20px20px;border-top:20pxsolid#ccc;}$result['expires']){$data=array();$data['access_token']=getNewToken();$data['过期']=时间()+7000;$jsonStr=json_encode($data);$fp=fopen("access_token.json","w");fwrite($fp,$jsonStr);fclose($fp);返回$data['access_token'];}else{return$result['access_token'];}}//获取新的access_token函数getNewToken($appid,$appsecret){全局$appid;全局$appsecret;$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret";$access_token_Arr=file_get_contents($url);$token_jsonarr=json_decode($access_token_Arr,true);return$token_jsonarr["access_token"];}$access_token=getToken();//初始化CURL$ch=curl_init();//目标服务器地址curl_setopt($ch,CURLOPT_URL,'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$access_token);//提交方式为POSTcurl_setopt($ch,CURLOPT_POST,true);//生成场景$scene=rand(1111111111,9999999999);//POSTDATA$data=array('page'=>'pages/queding/index','scene'=>$scene);//将DATA转换为json$jsondata=json_encode($data,true);curl_setopt($ch,CURLOPT_POSTFIELDS,$jsondata);//检查认证证书的来源curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);//从证书中检查是否存在SSL加密算法curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//得到的信息是以文件流的形式返回,而不是直接输出curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//发起请求$result=curl_exec($ch);//生成二维码file_put_contents("qrcode.png",$result);$base64_image="data:image/jpeg;base64,".base64_encode($result);//断开数据库连接mysql_close($con);echo"";echo"";echo"

";echo"请使用微信扫码授权登录";echo"";echo"";//实时数据流echo"";echo"实时数据流
";echo"
";echo"
";echo"";echo"";echo"";echo"";//关闭请求curl_close($ch);?>后台指令xcx_login.php是小程序wx.request的后端服务。lunxun.php是网页上的轮询扫描结果界面。这里我使用ajax轮询creatqrcode.php是在网页上创建的小程序代码的页面数据库结构。程序源码只需修改后台网址微信扫码获取小程序源码作者:TANKINGWeb:http://www.likeyun.cn日期:2020-06-10WeChat:脸6009