登录对接

登录流程时序

说明:

  1. 前端调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  2. 后端调用 auth.code2Session 接口,换取 用户唯一标识 OpenID会话密钥 session_key

之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

注意:

  1. 会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥
  2. 临时登录凭证 code 只能使用一次

前端登录授权代码:

wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        var code = res.code
        if (res.code) {
          wx.getSetting({
            success: res => {
              if (res.authSetting['scope.userInfo']) {
                // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
                wx.getUserInfo({
                  success: res => {
                    if (code && res.encryptedData && res.iv) {
                      console.log({ 'code': code, 'encryptedData': res.encryptedData, 'iv': res.iv })
                      console.log(res.encryptedData)
                      console.log(res.rawData)
                      wx.request({
                        url: 'http://**',  // 自己后台的登录接口
                        method: 'POST',
                        data: {
                          'code': code,
                          'encryptedData': res.encryptedData,
                          'iv': res.iv
                        },
                        success:function(res){}
                      })

                    }
                    // 可以将 res 发送给后台解码出 unionId
                    this.globalData.userInfo = res.userInfo

                    // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
                    // 所以此处加入 callback 以防止这种情况
                    if (this.userInfoReadyCallback) {
                      this.userInfoReadyCallback(res)
                    }
                  }
                })
              }
            }
          })
        }

      }
    })

后端需要做的就是发送请求到:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
文档说明:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
openid是微信针对每个小程序给用户下发的个人认证

你可能感兴趣的:(登录对接)