记录一下
每次用户 退出登录 或者 登录失效 后,进入小程序都要重新走一遍登录流程,为了提升用户体验,所以优化登陆流程,使用两种登陆场景:
1、正常登录流程
2、code登录流程(根据微信code静默登录(已存在且绑定手机号))
使用code登录,每次打开小程序 先使用code登录 ,用code去拿到openid,通过openid查库, 有这个用户话,返回登录信息,自动登录小程序,用户不用在走一遍登录流程, 如果用户不存在 再跳转登录页面进行登陆。
getUserInfoByCode() {
var that = this;
uni.login({ //获取code
provider: 'weixin',
success: function(wxcode) {
console.log(wxcode.code)
//拿到code后进行的操作
//调用后端的code接口,把code传给后端
//后端返回的用户信息存到本地,表示用户已是登陆状态
}
});
},
//完整的代码
// 通过微信code获取用户信息
getUserInfoByCode() {
return new Promise((resolve, reject) => {
uni.login({
success: async wxcode=> {
let res = await this.$api.resolve('wxLogin_code', {
wxCode: wxcode.code
})
uni.setStorageSync('userData', res) // 用户信息
uni.setStorageSync('authentication', res.authentication) // 鉴权码
this.$setData('common.userData', res) // 存储用户信息
resolve()
},
fail() {
resolve()
}
})
})
},
注意:每次调用uni.login 得到的code都不一样,如果出现得到的code相同的情况(在一定时间内获取相同code情况),可能会导致获取openid失败(可能是调用了两遍接口)后台做一下幂等就行了。