微信小程序登录并且获取openid和unionid

一、使用wx.login获取code值,wx.getUserInfo获取encryptedDatarawDatasignature,使用wx.requestphp请求数据。(如果你的小程序没有绑定微信开放平台,解密的数据中不包含unionid参数

wx.login({
      success:function(res){
        var code = res.code;
        wx.getUserInfo({
          success: function (res) {
            var encryptedData = res.encryptedData;
            var rawData = res.rawData;
            var signature = res.signature;
            var iv = res.iv;
            wx.request({
              url: 'https链接,请求地址',
              data: {
                encryptedData: encryptedData,
                code: code,
                signature: signature,
                rawData: rawData,
                iv:iv
              },
              method: "POST",
              header: { 'content-type':'application/x-www-form-urlencoded' },
              success: function (res) {
                console.log(res.data);
              },
              fail: function (e) {
                cosole.log(e);
              }
            });
          }
        });
      }
    })

 二、php处理代码(wxBizDataCrypt.php注意php7以上版本需要修改)

<?php
include_once "wxBizDataCrypt.php";
$js_code=$_POST["code"];
$encryptedData=$_POST["encryptedData"];
$signature=$_POST["signature"];
$rawData=$_POST["rawData"];
$iv = $_POST["iv"];

$appid = 'appid';
$appSecret="appSecret";

$str = file_get_contents('https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$appSecret.'&js_code='.$js_code.'&grant_type=authorization_code');
$str=json_decode($str);
/*print_r($str);*/
$sessionKey=$str->session_key;

$signature2=sha1($rawData.$sessionKey);
if($signature!=$signature2){
	$arr=array("code"=>3);
    exit(json_encode($arr));
}

$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data );
if ($errCode == 0) {
    print($data);
} else {
    print($errCode);
}

注:wxBizDataCrypt.php可以在开发者文档里面找到下载链接(框架-开放数据校验与解密)

wxBizDataCrypt.php下载:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/demo/aes-sample.zip

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值