您的位置:首页 > 移动开发 > 微信开发

微信小程序 登录过程

2017-03-10 10:30 627 查看

微信小程序 登录过程

本文由笔者自己经验所得,不妥之处还望指教:

微信代码

php后端代码

流程

小程序请求code

小程序请求encryptedData

后端请求session_key

后端解密

小程序收到解密后的数据

小程序请求code

wx.login({
success: function (res) {
var code = res.code
console.info(res)
}
})


res打印结果为

Object { errMsg: “login:ok”,

code: “0132ltkt1BK8S90VtQmt1Eexkt12ltkE”}

小程序请求encryptedData

wx.getUserInfo({
success: function (res) {
var encryptedData = res.encryptedData
var iv = res.iv
}
})
这里我们只需要   encryptedData 和iv


res打印结果为

Object {

errMsg: “getUserInfo:ok”,

rawData:”{“nickName”:”nickname”,”gender”:0,”language”:”zh_CN”…}”,

userInfo: Object,

signature: …”,

encryptData:…

encryptedData:…}

这里取encryptedData

通过服务器获取加密数据

wx.request({
url: 'https://www.xxxx.net/login.php',
data: {
code: code,
encryptedData: encryptedData,
iv: iv
},
method: 'GET',
success: function (res) {
that.globalData.userInfo =JSON.parse(res.data.trim())
cb(that.globalData.userInfo)
}
})


res打印结果为

Object {errMsg: “request:ok”, data: ”{“openId”:”…”,”nick…}}”, statusCode: 200}

这样就获得了解密后数据

php代码

把微信加密解密文件放入目录

下载 aec-sample.rar

include_once "wxBizDataCrypt.php";
$appid = '你的APPID';
$secret = '你的secret';
$code = $_GET['code'];
$encryptedData = $_GET['encryptedData'];

$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_URL, 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.
'&js_code='.$code.'&grant_type=authorization_code');
$data = curl_exec($curl);
curl_close($curl);

$response_data = '';
$session_key = json_decode($data)->session_key;
$wxBizDataCrypt = new WXBizDataCrypt($appid, $session_key);
$errCode=$wxBizDataCrypt->decryptData($encryptedData, $iv, $response_data);
echo $response_data;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信小程序登录
相关文章推荐