小程序的登陆流程个人详解

小程序的登陆流程个人分析

最近开发了小程序,小程序感觉有很多坑,比方说授权方式从主动推送现在改为了必须主动点击,还有类似于无法进行双向绑定,还有表单校验的问题,这里先写一下我认为比较关键的小程序的 登陆流程

下面这张图是小程序官方文档登陆流程图

小程序的登陆流程个人详解_第1张图片

光看这张图理解起来其实是有点难以理解的

这里我先分析一下我在做小程序的时候登陆的流程

登陆流程

​ 首先我们手动触发wx.login()这个内置方法获取code,这个code相当于一个临时的验证码,发送给后端,后端再通过微信的开放接口将这个code+appid+appsecret发送给微信后台(appid和appsecret是再微信的小程序平台配置好的,后端以及存好这两个码),到这步为止后端还不知道到底这个用户的openId(微信用户的专属id)是多少。

​ 微信后台收到以后会触发小程序提醒,告诉用户这个小程序想要获取你的信息你是否同意,授权之后微信会给我们的后端返回openId和session_key(用于解密用户的隐私信息),这时候后端才得到了用户的专属openId并存起来,将这个用户当作后台的一个真正用户,并返回一个后台的token,用于小程序的接口请求

wx.login({
        success: res => {
          // 发送 res.code 到后台换取 openId, sessionKey, unionId
          app.globalData.post({
            url: app.globalData.api.LOGIN,
            data: {
              code: res.code
            }
          }).then(r => {
            if (r.data.phoneNumber && r.data.phoneNumber != '') { //用于判断是否数据库中已存用户的手机号,如果没有需要用户手动授权获取
              that.setData({ hasPhone: true })
            }else {
              that.setData({ hasPhone: false })
            }
            wx.setStorageSync('token', r.data.weixinUserToken) //将token存储在本地,当token没有失效时,后台可以直接登陆不需要再向微信后台求证
            app.globalData.header.wxToken = r.data.weixinUserToken //将token放入小程序的请求头重
            resolve(r.data.weixinUserToken)
          }).catch(e => {
            wx.showToast({
              icon: 'cancel',
              title: '验签失败'
            })
            reject(e)
          })
        }
      })
    })
  },

这时候小程序获取了后台的token相当于已经在后台登陆了,小程序端可以直接向后台请求接口了

你可能感兴趣的:(前端笔记,小程序)