微信小程序登录php,thinkphp5开发微信小程序

  微信小程序登录php,thinkphp5开发微信小程序

  微信小程序官方给了十分详细的登陆时序图,当然为了安全着想,应该加上签名加密。

  微信小程序端

  登录:功能(e) {

  变那个=这个

  wx.login({

  成功:函数(资源){

  var code=res.code//获取密码

  wx.getUserInfo({ //得到原始数据,签名,加密数据

  成功:函数(数据){

  var原始数据=数据。原始数据;

  var签名=data.signature

  var加密数据=数据。加密数据;

  var iv=data.iv

  wx.request({

   url:你自己的后台地址,

  数据:{

  代码:代码,

  原始数据:原始数据,

  签名:签名,

  四:四,

  “加密数据”:加密数据

  方法:“得到”,

  成功:函数(信息){

  控制台。日志(信息);

  调用wx。登录获取代码1000 .调用wx.getUserInfo获取签名所需的原始数据,签名,加密数据。发起请求将获取的数据发送的后台。

  ThinkPHP后台

  //开发者使用登陆凭证密码获取会话密钥和信息

  $ APPID=

  $ app secret=

  $ code=I( get。代码’);

  $ URL= https://API。微信。QQ。com/SNS/jscode 2会话?appid= .$APPID .机密=。$AppSecret .js_code= .$代码.grant _ type=authorization _ code ;

  $ arr=vget($ URL);//一个使用卷曲实现的得到方法请求

  $arr=json_decode($arr,true);

  $ OpenID=$ arr[ OpenID ];

  $ session _ key=$ arr[ session _ key ];

  //数据签名校验

  $ signature=I( get。签名’);

  $ signature 2=sha1($ _ GET[ raw data ].$ session _ key);//记住不应该用东帝汶的网络域名代号中的我方法,会过滤掉必要的数据

  如果($签名!=$signature2) {

  回声数据签名验证失败!死;

  //开发者如需要获取敏感数据,需要对接口返回的加密数据(加密数据)进行对称解密

  供应商( PHP。wxbizdatacrypt’);//加载解密文件,在官方有下载

  $ encrypted data=$ _ GET[ encrypted data ];

  $ iv=$ _ GET[ iv ];

  $pc=new \WXBizDataCrypt($APPID,$ session _ key);

  $ errCode=$ PC-解密数据($加密数据,$iv,$ data);//其中$数据包含用户的所有数据

  if ($errCode!=0) {

  回声解密数据失败!死;

  //生成第三方第三次会议

  $ session3rd=null

  $ str pol= abcdefghijklmnopqrstuvwxyz 0123456789 abcdefghijklmnopqrstuvwxyz ;

  $ max=strlen($ strPol)-1;

  for($ I=0;$i $i ){

  $session3rd .=$strPol[rand(0,$ max)];

  echo $ session3rd

  根据登陆凭证密码获取会话密钥和openid。数据签名校验。数据解密。生成第三方第三次会议并返回微信小程序端。

  其中卷曲实现的得到方法请求方法

  公共函数vget($url){

  $ info=curl _ init();

  curl_setopt($info,CURLOPT_RETURNTRANSFER,true);

  curl_setopt($info,CURLOPT_HEADER,0);

  curl_setopt($info,CURLOPT_NOBODY,0);

  curl_setopt($info,CURLOPT_SSL_VERIFYPEER,false);

  curl_setopt($info,CURLOPT_SSL_VERIFYHOST,false);

  curl_setopt($info,CURLOPT_URL,$ URL);

  $ output=curl _ exec($ info);

  curl _ close($ info);

  返回$输出

  作者:笃子丹

  链接:https://www。金淑。com/p/340 B1 ba 5245 e

  來源:简书

  著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: