微信小程序后端实现授权登录(2)

值 说明
-1   系统繁忙,此时请开发者稍候再试  
0   请求成功  
40029   code 无效  
45011   频率限制,每个用户每分钟100次

 

二.信息授权wx.getUserInfo

获取用户信息。

参数

属性 类型 默认值 必填 说明
withCredentials   boolean         是否带上登录态信息。当 withCredentials 为 true 时,要求此前有调用过 wx.login 且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。  
lang   string   en     显示用户信息的语言  
success   function         接口调用成功的回调函数  
fail   function         接口调用失败的回调函数  
complete   function         接口调用结束的回调函数(调用成功、失败都会执行)  

object.lang 的合法值

值 说明
en   英文  
zh_CN   简体中文  
zh_TW   繁体中文  

object.success 回调函数

参数

属性 类型 说明
userInfo   UserInfo   用户信息对象,不包含 openid 等敏感信息  
rawData   string   不包括敏感信息的原始数据字符串,用于计算签名  
signature   string   使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密  
encryptedData   string   包括敏感数据在内的完整用户信息的加密数据,详见   
iv   string   加密算法的初始向量,详见 
 

注意:

1.小程序端获取授权信息要用button按钮触发

2.小程序端需要将 encryptedData, iv, login_key 传到后端用于解密

案例:

登录:

当小程序第一次执行的时候就调用wx.login

小程序端:apps.js

App({ onLaunch: function () { var _this=this // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId wx.request({ url: _this.globalData.Url+'/login/', // 后端路径 data:{"code":res.code}, // code header:{"content-type":"application/json"}, method:"POST", success:function(res){ console.log(res) // 小程序端存储login_key wx.setStorageSync("login_key",res.data.data.login_key) } }) } }) }, globalData: { Url:"http://127.0.0.1:8000", userInfo: null } })

后端 django

wx ├── settings.py # 小程序id,code2Session等配置 ├── wx_login.py # 用于调用code2Session拿到openid等 └── WXBizDataCrypt.py # 获取用户授权信息的解密算法,官方下载

项目/settings.py

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/6e855866c53a5ed8f9a6d1f6fff37928.html