微信小程序解密getUserInfo获取微信用户唯一值:unionId

微信小程序解密getUserInfo获取微信用户唯一值:unionId

《微信小程序解密getUserInfo获取微信用户唯一值:unionId》

小程序端(发起请求)

[code]

wx.login({
    success(rs){
      var code = rs.code  //登录凭证
      if(code){
        
        // 调用授权 获取用户信息接口
        wx.getUserInfo({
          success: function (res) {
            console.log(res) 
            var encryptedData = res.encryptedData
            var iv = res.iv
            var rawData = res.rawData
            var signature = res.signature
            //请求服务器,解密获取openId和unionId
            wx.request({
              url: app.domain + 
              'teacherapi/Wx_Decode/WxDecode',
              method: 'POST',
              header: { 'content-type': 
              'application/x-www-form-urlencoded' },
              data: { encryptedData: encryptedData, iv:
              
               iv, rawData: rawData, signature: 
               signature ,code:code},
              success: function (res) {
          var data = JSON.parse(res.data.msg)    //json转对象
                console.log(data)  //获取服务器返回的结果
              }
            })            
          }
        })
      }
    }
  })

[/code]

后端程序(接受请求)

[code]

// 引入解密文件 在微信小程序开发文档下载

     include_once “WXBizDataCrypt.php”;
        $data = I(‘post.’); // Tp3.2 获取全部的值
        // // 引入解密文件 在微信小程序开发文档下载
         $appid = ‘appid’;
         $appsecret = ‘appsecret ‘;
         $grant_type = “authorization_code”; //授权(必填)
         $code = $data[‘code’]; //有效期5分钟 登录会话
         $encryptedData=$data[‘encryptedData’];
         $iv = $data[‘iv’];
         $signature = $data[‘signature’];
         $rawData = $data[‘rawData’];
         $url = “https://api.weixin.qq.com/sns/jscode2session?”.”appid=”.$appid.”&secret=”.$appsecret.”&js_code=”.$code.”&grant_type=”.$grant_type;  //品进诶url
         $res = json_decode($this->httpGet($url),true);
         $sessionKey = $res[‘session_key’]; //取出json里对应的值
         $signature2 = sha1(htmlspecialchars_decode($rawData).$sessionKey);
         if ($signature2 !== $signature){
returnjson_encode([‘er’=>’123’]);
}
$pc=new\WXBizDataCrypt($appid,$sessionKey);
$errCode=$pc->decryptData($encryptedData,$iv,$data);
   //输出需要获取的值或者是错误代码
        if ($errCode == 0) {
            print($data . “\n”);
        } else {
            print($errCode . “\n”);
        }\”

[/code]

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据