前言

总结一下小程序平台登录和业务登录。

流程

先上流程图

img

一. 获取code

小程序前端通过wx.login向微信平台获取code作为用户登录的凭证。

code由微信平台根据AppID和个人设备等信息关联生成,具有一次性和时效性。使用一次或者获取约五分钟后失效。

getLogin() {
   // 小程序登录
   wx.login({
   success: res => {
      console.log(res.code)
   }
   })
},

二. 开发者服务器获取code,并拿回sessin_key和openid

通过自己的业务接口,小程序前端把刚刚获取的code传回开发者服务器。

服务器拿到code以后,带上小程序的appid和appsecret一并传给微信服务器进行验证。

微信服务器验证通过后,将sessin_key和openid传回给开发者服务器。

到这里,才正式实现了小程序、开发者服务器和微信接口服务的联通。

三. 开发者服务器返回自定义登录态

有了密钥,才能进行接下来通讯的加密和解密。开发者服务器通过对这些信息和我们自己的登录态进行包装,传出一个token给前端,当然也可以附带一些权限信息什么的。

四. 前端获得token

接着,前端通过wx.setStorageSync将权限和token信息等长期存放在本地;或者通过app的全局参数,把信息短期存在本次生命周期里(视业务情况而定)

login(code){
    // 调业务接口
    http.httpPromise.postPromise('/getToken?code='+code)
    .then(res => {
      console.log('获取登录状态')
      app.token = res.data.token
      if(res.data.ifStaff=='1'){
        console.log('是公司员工')
        wx.setStorageSync('hadAuth', true)
      }
      else{
        console.log('不是公司员工')
        wx.setStorageSync('hadAuth', false)
      }
    })
  },

五. 业务登录

完成前面四步,我们已经走完了小程序平台登录流程,从code到sessionid到token,完成了从小程序连接到业务连接的步骤。

如果我们的项目除了微信的账号,还有业务逻辑的账号。就需要进一步的业务登录了。

其实道理也是一样,在第四步拿到token之后,进一步带上用户账号和密码通过业务接口获取新的一个_token,就完成了业务账号的登录。