微信小程序用户登录前后台详解
来源:互联网 发布:苗勒管永存综合征 知乎 编辑:程序博客网 时间:2024/05/17 22:46
PS:本文前台默认是小程序代码,后台语言默认是PHP
一. 前台
wx.login({ success: function(res) { if (res.code) { //获取用户信息 wx.getUserInfo({ success: function (msg){ //发起网络请求 wx.request({ url: 'https://test.com/onLogin.php', method: 'POST', header: { // 'content-type': 'application/json' 'content-type': 'application/x-www-form-urlencoded' }, data: { code: res.code, encryptedData: msg.encryptedData, iv: msg.iv }, success: function (data){ console.log(data); }), fail: function (res) { console.log(res) } }) } }) } else { console.log('获取用户登录态失败!' + res.errMsg) } }});
代码详解:
1. wx.login返回的res如下图
code为登录凭证,使用一次后失效
2. wx.getUserInfo返回的msg如下图
msg里的encryptedData和iv都非常重要的敏感信息,后面讲后台接口时会讲到
3. data为我们后台登录接口返回的数据(业务数据)
二. 后台
- 第一步,requier wxBizDataCrypt.php 文件,官方文件点我下载
通过code 换取 session_key, 会话密钥,按照官方文档来即可,接口地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code该返回的是包含openid和unionid的json字符串(unionid机制见文末解析),转换成数组格式如下图
错误时返回的json包如下,
{"errcode": 40029,"errmsg": "invalid code"}
登录验证
$pc = new WXBizDataCrypt($appid, $sessionKey);$errCode = $pc->decryptData($encryptedData, $iv, $data );1. encryptedData和iv为前台传过来的参数(密文)2. 若$errCode !=0 则验证失败,接口应该返回失败数据3. $data为解密后的用户基本信息,json格式,转换数组后如下图
- 登录验证通过后,就可以拿到用户的openid了(多平台应该是取unionid),进行查找数据库的操作,获取用户在另外平台上的数据了
- 末尾返回的数据就是上面前台的代码详解里的data参数啦
openid与unionid
- 同一用户对同一应用(公众号、小程序等)的openid是相同的
- 不同用户对不同应用的openid是不同的
- 同一个微信开放平台帐号下的应用,用户的unionid是唯一的
- 不同应用若想获取同一用户在其他应用数据,应先根据unionid获取用户在该平台的openid,然后根据openid获取相应数据
- 更多详情参考官方文档
阅读全文
0 0
- 微信小程序用户登录前后台详解
- laravel5.2实现区分前后台用户登录
- laravel5.2实现区分前后台用户登录
- yii2前后台用户
- laravel5.5前后台登录认证实现过程详解
- 前后台登录模板分离
- 进程与优先级,ps命令,前后台的调用,用户登录审计,top
- 进程,ps,优先级,前后台调用,进程信号,用户登录审计,top,系统服务的控制
- Symbian前后台转换程序
- 前后台之间切换程序
- Android 判断程序前后台
- Linux程序前后台问题
- linux程序前后台切换
- linux程序前后台切换
- 天河微信小程序入门《三》:打通任督二脉,前后台互通
- Yii中处理前后台登录新方法
- Yii中处理前后台登录新方法
- Yii中处理前后台登录新方法
- C
- hive-2.2.0 伪分布式环境搭建
- 百度地图开发参数设置正确,却定位到大西洋海域去了,定位失败解决方案
- 携程隐形消费,你中招了么?
- php数组简单操作
- 微信小程序用户登录前后台详解
- pengpeng的推荐,谢谢!程序员常用100网站
- linux命令--tar的-C参数的用法
- sql数据库使用中的问题(一)
- 打开FL Studio项目文件的步骤解析
- c语言中多个函数作为另一个函数的参数时的调用顺序
- eclipse安装Activiti Designer插件
- Python中的map、zip、filter、reduce函数使用
- spring源码-事务