微信小程序登录流程

客户端

  • <open-data> 组件,可直接获取基本的用户数据
  • 需要登录的接口 -> buildHeader
    • 无code:wx.login 获取code
    • 有code:headers 设置 wx_code
  • 授权回调 ->userInfo
  • 定期wx.checkSession检测 session_key 是否过期
  • wx.request 发送code到服务端
    • x-check-login 用于判断是否需要登录校验

服务端

  • 是否需要登录校验
  • 根据code 进行 jscode2session 登录校验 -> 没有code
  • checkUser _user

一些概念

  • code 临时登录凭证(有效期五分钟,只能使用一次)
    • client: wx.login() -> code
    • header 封装自定义登录态(用于需要静默登录的接口)
      • X-Wx-Code: code
      • X-Wx-Rawdata: random
      • User-Agent: token
    • client: wx.request(avatar、nickname) -> openid
  • appid 小程序唯一标识、appsecret 小程序密钥
  • session_key 会话密钥(对用户数据进行加密签名)、openid 用户唯一标识
    • server: code + appid + appsecret -> jscode2session -> openid、session_key、unionid
    • jscode2session 登录凭证校验接口
  • 3rd_session
  • unioinid 用户在微信开放平台的唯一标识。
    • 同一个用户,在同一个微信开放平台下的不同应用,unionid是相同的
    • 云函数 cloud.getWXContext 获取 unionId
  • accessToken 后台接口调用凭证
    • server: appid + appsecret -> getAccessToken
    • getAccessToken

小程序登录流程时序图
参考
api