规避小程序切换正式版、体验版时跳转两次登录界面

更新日期: 2020-10-09 阅读次数: 3808 字数: 418 分类: 微信小程序

由于微信小程序线上版本和体验版本是共享的一套 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 聊聊, 查看更多联系方式