找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索本站精品资源

首页 教程频道 小程序开发 查看内容

thinkphp后台获取微信小程序用户信息

作者:模板之家 2017-12-30 09:12 1985人关注

首先需要看懂微信小程序开发文档的 开放接口中的 登录 和 用户信息。 wx.login(OBJECT) 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录

首先需要看懂微信小程序开发文档的  开放接口中的  登录 和 用户信息。
 
wx.login(OBJECT)

调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。

code 换取 session_key

?这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid。

session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输

小程序端的代码:

[javascript] view plain copy
 
 print?
  1. //app.js  
  2. App({  
  3.   onLaunch: function () {  
  4.     //调用API从本地缓存中获取数据  
  5.     var logs = wx.getStorageSync('logs') || []  
  6.     logs.unshift(Date.now())  
  7.     wx.setStorageSync('logs', logs)  
  8.   },  
  9.   getUserInfo:function(cb){  
  10.     var that = this  
  11.     if(this.globalData.userInfo){  
  12.       typeof cb == "function" && cb(this.globalData.userInfo)  
  13.     }else{  
  14.       //调用登录接口  
  15.       wx.login({  
  16.         success: function (res) {  
  17.               var code = res.code  
  18.                 // success  
  19.                 // 获取用户信息  
  20.               wx.getUserInfo({  
  21.                   success: function (data) {  
  22.                     that.globalData.userInfo = data.userInfo  
  23.                     typeof cb == "function" && cb(that.globalData.userInfo)  
  24.                     var rawData = data.rawData;  
  25.                     var signature = data.signature;  
  26.                     var encryptedData = data.encryptedData;  
  27.                     var iv = data.iv;  
  28.                     wx.request({  
  29.                       url: "你的后台地址",  
  30.                       data: {  
  31.                           "code" : code,  
  32.                          " rawData" : rawData,  
  33.                           "signature" : signature,  
  34.                          " iv" : iv,  
  35.                           "encryptedData" : encryptedData  
  36.                       },  
  37.                       method: 'GET',  
  38.                       success: function(res){  
  39.                         // success  
  40.                         console.log(res)  
  41.                         console.log(rawData)  
  42.                       }  
  43.                     })  
  44.                   }  
  45.                 })  
  46.         }  
  47.       })  
  48.     }  
  49.   },  
  50.   globalData:{  
  51.     userInfo:null  
  52.   },  
  53. })  

查看微信小程序端的 network 可能查看请求是否成功
 

thinkphp后台代码

[php] view plain copy
 
 print?
  1. public function sendCode(){  
  2.     $APPID = '################APPID';  
  3.     $AppSecret = '#################';  
  4.     $code = input('get.code');  
  5.     $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$APPID.'&secret='.$AppSecret.'&js_code='.$code.'&grant_type=authorization_code';  
  6.     $arr = $this -> vegt($url);  
  7.   
  8.     $arr = json_decode($arr,true);  
  9.     // $openid = $arr['openid'];  
  10.     $session_key = $arr['session_key'];  
  11.   
  12.     // 数字签名校验  
  13.     $signature = input('get.signature');  
  14.     $signature2 = sha1($_GET['rawData'].$session_key);  
  15.     if($signature != $signature2){  
  16.         echo "数字签名失败";  
  17.         die;  
  18.     }  
  19.     // 获取信息,对接口进行解密  
  20.     Vendor("PHP.wxBizDataCrypt");  
  21. 邀请

路过

雷人

握手

鲜花

鸡蛋
原作者: 模板之家 来自: 网络收集

全部回复(0)