-
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
。继而调用wx.request()
发送请求到业务服务器(code
、encryptedData
、iv
以请求头的形式发送) - 业务服务器收到请求后,从请求头中取出
code
、encryptedData
、iv
,调用会话管理服务器提供的用户登录接口 - 会话管理服务器收到请求后,会调用微信服务器 jscode2session 接口,使用
code
换取session_key
和用户openId
- 然后用
session_key
和iv
对微信用户信息encryptedData
进行解密得到用户明文信息userInfo
,使用session_key
和openId
处理得到自己的id
和skey
写入数据库用来管理会话。最后将id
、skey
和userInfo
一并返回给业务服务器 - 业务服务器收到会话管理服务器的响应后,将
id
和skey
返回给微信小程序客户端 - 微信小程序客户端将
id
和skey
存入storage
中供后续请求使用
- 微信小程序客户端从
storage
取出id
和skey
,调用wx.request()
发送请求到业务服务器(id
和skey
以请求头的形式发送) - 业务服务器收到请求后,从请求头中取出
id
和skey
,调用会话管理服务器提供的登录态校验接口 - 会话管理服务器收到请求后,校验参数
id
和skey
,返回用户信息userInfo
(校验成功)或失败信息(校验失败)给业务服务器- 校验成功时,业务服务器可以使用用户信息处理其他业务逻辑
- 校验失败时,业务服务器将错误信息直接响应给微信小程序客户端。此时,微信小程序客户端会重新发起请求处理用户登录及校验登录态
以下是处理业务请求时校验登录态流程的时序图:
[ 返回 Wiki 首页 ]
Wafer - 企业级微信小程序全栈方案
如果 Wiki 内容不能解决你的疑惑,欢迎提交 Issue 进行反馈或者加入 QQ 群(216602757)进行讨论