-
Notifications
You must be signed in to change notification settings - Fork 333
会话服务
Together we can fly! edited this page Nov 20, 2016
·
10 revisions
会话服务可以让开发者很方便地在业务服务器中获取微信用户信息,然后在此基础上处理其他业务逻辑。
会话服务涉及四个模块协作处理通信过程,它们分别是:微信小程序客户端(需使用客户端增强 SDK)、业务服务器(需使用服务端 SDK)、会话管理服务器及微信服务器。
会话服务主要包含处理用户登录及处理业务请求时校验登录态两个功能。以下阐述这两个功能的具体实现。
- 客户端 SDK 获取登陆参数
- 调用
wx.login()
获取登录凭证code
- 调用
wx.getUserInfo()
获取用户信息的加密数据encryptedData
和加密初始向量iv
- 调用
- 客户端 SDK 调用
wx.request()
向业务服务器发起登录请求(code
、encryptedData
、iv
以请求头的形式发送) - 业务服务器收到请求后
- 从请求头中取出
code
、encryptedData
、iv
- 调用会话管理服务器提供的用户登录接口
qcloud.cam.id_skey
请求登录
- 从请求头中取出
- 会话管理服务器收到请求后
- 调用微信服务器 jscode2session 接口,使用
code
换取session_key
和用户openId
- 使用
session_key
和openId
处理得到自己的id
和skey
写入数据库用来管理会话 - 使用
session_key
和iv
对加密的用户信息encryptedData
进行解密得到用户明文信息userInfo
- 将
id
、skey
和userInfo
一并返回给业务服务器
- 调用微信服务器 jscode2session 接口,使用
- 业务服务器收到会话管理服务器的响应后,将
id
和skey
返回给微信小程序客户端 - 微信小程序客户端将
id
和skey
存入storage
中供后续请求使用
- 小程序客户端使用 SDK 的请求方法
qcloud.request()
发送业务请求 - SDK 通过
wx.getStorage()
取出会话参数id
和skey
- 调用
wx.request()
把业务请求发送到业务服务器(id
和skey
会附加在请求头中) - 业务服务器收到请求后,从请求头中取出
id
和skey
,调用会话管理服务器提供的登录态校验接口 - 会话管理服务器收到请求后,校验参数
id
和skey
,返回用户信息userInfo
(校验成功)或失败信息(校验失败)给业务服务器- 校验成功时,业务服务器可以使用用户信息处理其他业务逻辑,并进行响应
- 校验失败时,业务服务器将错误信息直接响应给微信小程序客户端,SDK 如果发现错误是登录态失效,会自动重新发起登录流程后重新进行业务请求
[ 返回 Wiki 首页 ]
Wafer - 企业级微信小程序全栈方案
如果 Wiki 内容不能解决你的疑惑,欢迎提交 Issue 进行反馈或者加入 QQ 群(216602757)进行讨论