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

文章目录

    由于微信小程序线上版本和体验版本是共享的一套 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式