前言
总结一下小程序平台登录和业务登录。
流程
先上流程图

一. 获取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,就完成了业务账号的登录。