由于微信小程序线上版本和体验版本是共享的一套 storage,所以会造成登录 token 冲突的问题。参考:
https://developers.weixin.qq.com/community/develop/doc/000ce0d9504b0002425793d745b000
引发的问题就是,用了一会体验版本,微信里缓存的就是体验环境的 token;但是一旦切换线上版本,实际上使用的还是缓存的体验环境的 token,就会导致 API 接口调用失败,而程序里会误认为是 token 失效,自动跳转 login 界面。
这并不是问题。
但,如果同时两个接口报了 token 失效,就会跳两次 login 界面。这就会是一个奇怪的体验问题了。虽然只影响到了内部开发、测试人员,但是对于我每天都有调试的人来说,还是有必要解决一下。
方案一
如果是调用更新最后登录时间那个接口报出的 token 失效,就不跳转 login 界面。
这个可以从源头上堵住问题。
但是,并不能规避以后遇到的一个页面调用多次 API 出现的 token 失效问题。
方案二
如果当前在 login 页面,就不跳 login。
我担心两个接口同时返回 token 失效,同时跳转 login 页面。
方案三
如果上一页是 login,就多跳一层。
方案三实现代码。
/**
* 如果上一页是 login,就多跳一层。
* 避免切换正式版、体验版时弹两次登录窗口。
**/
customNavigateBack: function() {
let pages = getCurrentPages();
let lastPage = pages[pages.length - 2];
if (lastPage.route == "pages/login/login") {
wx.navigateBack({
delta: 2
})
} else {
wx.navigateBack();
}
},
实际方案
我同时使用了方案一和三,应该可以规避绝大多数这种问题了。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式