微信小程序 登录过程
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;
相关文章推荐
- 微信小程序的登录过程简介
- php(ThinkPHP)实现微信小程序的登录过程
- php(ThinkPHP)实现微信小程序的登录过程
- php(ThinkPHP)实现微信小程序的登录过程
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- 已成功与服务器建立连接,但是在登录过程中发生错取。(provider:共享内存提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL Server,错误:233)
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- SQL SERVER问题解决:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程。)
- SQL SERVER问题解决:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程。)
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- .net连接Sql时出现"已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: TCP 提供程序, error: 0 - 指定的网络名不再可用。) "
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- 已成功与服务器建立连接 但是在登录过程中发生错误。 provider 共享内存提供程序 error 0 管道的另一端上无任何进程。
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- c# 一个托盘程序的详细设计过程(用户登录)