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

更新日期: 2020-10-09 阅读次数: 188 字数: 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 聊聊, 查看更多联系方式。 白天写程序,晚上哄熊孩子,可能回复有点慢,见谅。同时也欢迎关注我的微信公众号“大象工具”: 大象工具微信公众号

相关文章

爱评论不评论

近期节日

2020年10月31日 世界勤俭日
2020年11月01日 万圣节
2020年11月07日 立冬
2020年11月08日 中国记者日
2020年11月10日 世界青年节
2020年11月11日 光棍节
2020年11月14日 世界糖尿病日
2020年11月17日 国际大学生节
2020年11月20日 国际儿童日
2020年11月21日 世界问候日
2020年11月22日 小雪
2020年11月26日 感恩节
查看更多节日