如题:最新版纯血鸿蒙和最新版微信,某些小程序无法登录的问题。
困扰了我一天半
整整一天半!!!
起初定位到的问题是:

“未执行 “getPhoneNumber”的方法”

 /**
   * 获取手机号授权及登录状态
   */
  getPhoneNumber (e) {
    const _this = this
    if (e.detail.errMsg !== 'getPhoneNumber:ok') return
    // 校验微信登录是否过期
    wx.checkSession({
      success () {
        // session_key 未过期
        _this.login(e)
      },
      fail () {
        // session_key 已经失效,需要重新执行登录流程
        _this.wxLogin(e, _this.login)
      }
    })
  }

因为我的console未执行。后来就加上一个 bindtap="getPhoneNumber"
有反应,但是获取不到e.detail中的code等属性值.....
真的无解了么?

我都想放弃一键登录了!!

这个时候搜到uni论坛里也有同样的问题,大概是这样:

遂按照是刷新的问题,重新走一遍逻辑。
既然是刷新,而且还跳回了首页,那就全局过一遍跳转首页的所有代码。

在app.js中发现这么一段:

onShow (e) {
    // 当其它小程序返回本小程序 跳转回到首页
    let pathArr = [
      'pages-mis/pages/home/home',
      'pages/marketing/marketing',
      'pages/day-question/day-question'
    ]
    if (e.scene === 1038 && !pathArr.includes(e.path)) {
      wx.switchTab({
        url: '/pages/home/home'
      })
    }
  },

经控制台console测试,确实是这里,找到问题了。先解决再复盘。

在pathArr中加上'pages/login/login'

问题得到解决。

以上是重点!

原因呢?

微信8.0.14之前的版本都没有问题,新版出了问题,是因为新版返回的 scene确实是1038,正好对上了。

真的只是这样么?

好像不是!

鸿蒙微信8.0.14版本为什么点了“一键登录”后会导致页面刷新?

这个什么逻辑?之前版本是没有的。

有没有大佬知情人解答一下?

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐