小程序登录流程分析及实例代码分享
作者:Alpha时间:2019-03-21 阅读数:6825 +人阅读
小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。
登录流程时序
如上图所示,小程序用户登陆的一个完整流程。
1、调用wx.login()获取临时登录凭证code ,并回传到开发者服务器。
假设我们设定的登陆场景是用户打开小程序即检测是否登陆,未登录跳转到登陆授权界面进行登陆操作。具体如何检测可以通过微信缓存数据进行判断,当用户登陆成功后设定一个登陆状态缓存,再次打开后如果有该状态缓存证明已登陆过,否则跳转到登陆引导界面。
wx.login()目的是为了获取临时登陆凭证,通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。
{errMsg: "login:ok", code: "061yrVF92UnjJK0WOQF92TRIF92yrVFn"}
2、调用code2Session接口,换取用户唯一标识 OpenID 和 会话密钥 session_key。
登录凭证校验,本接口应在服务器端调用完成。通过wx.login()接口获得临时登录凭证code后传到开发者服务器调用此接口完成登录流程。
请求地址
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
appid | string | 是 | 小程序 appId | |
secret | string | 是 | 小程序 appSecret | |
js_code | string | 是 | 登录时获取的 code | |
grant_type | string | 是 | 授权类型,此处只需填写 authorization_code |
返回值
Object对象类型,返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
openid | string | 用户唯一标识 |
session_key | string | 会话密钥 |
unionid | string | 用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回,详见 UnionID 机制说明。 |
errcode | number | 错误码 |
errmsg | string | 错误信息 |
这一步获得的重要数据信息就是openid和session_key,通过他们两个就可以获取用户昵称、头像等重要信息。
errcode的合法值
值 | 说明 |
---|---|
-1 | 系统繁忙,此时请开发者稍候再试 |
0 | 请求成功 |
40029 | code 无效 |
45011 | 频率限制,每个用户每分钟100次 |
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。邮箱:595397166@qq.com