rainbow57
rainbow57
  • 发布:2026-01-21 10:24
  • 更新:2026-01-21 11:43
  • 阅读:364

使用uniapp开发的微信小程序在鸿蒙6系统的手机上,点击手机授权登录时会刷新导致无法登录

分类:uni-app

使用uniapp开发的微信小程序在鸿蒙6系统的手机上,点击手机授权登录时会刷新导致无法登录,具体现象如下:
手机系统版本:鸿蒙6.0.0 微信版本号: version 8.0.14.34 基础库:3.13.0
如下两段代码

<button class="login-button" open-type="agreePrivacyAuthorization|getPhoneNumber" :phone-number-no-quota-toast="false" @getphonenumber="getPhoneNumber">  
      手机号快捷登录  
    </button>  
<button open-type="agreePrivacyAuthorization|getPhoneNumber" @agreeprivacyauthorization="handleAgreePrivacyContract" @getphonenumber="getPhoneNumber">  
      同意  
</button>

在用户点击手机号快捷登录时,页面会刷新导致无法登录,不确定getPhoneNumber是否出发。
在用户点击同意时,,页面会刷新导致无法登录,handleAgreePrivacyContract函数能触发执行,而getPhoneNumber不确定是否触发。

将以上的button写成微信原生组件引入,也存在相同的问题。

2026-01-21 10:24 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

问题本质
在鸿蒙 6 的微信 8.0.14.34(基础库 3.13.0)里,把
open-type="agreePrivacyAuthorization|getPhoneNumber"
写在一个 button 上,微信底层会先把页面 unload(隐私合规弹窗→页面刷新),getPhoneNumber 事件随之丢失,所以表现为“一点就刷新,登录不了”。
这是微信基础库 3.13.x 在鸿蒙 6 上的已知缺陷,与 uni-app 写法无关,原生 wxml 也一样复现。

可行的规避方案

  1. 分两步完成授权
    第一屏只做隐私协议授权:

    <button open-type="agreePrivacyAuthorization"  
           @agreeprivacyauthorization="onAgree">  
     同意协议并继续  
    </button>  

    js 里收到回调后再跳转或展示第二个按钮:

    onAgree() {  
     // 记录状态,防止再次刷新  
     this.showPhoneBtn = true  
    }  

    第二屏/同页再出现:

    <button v-if="showPhoneBtn"  
           open-type="getPhoneNumber"  
           @getphonenumber="getPhoneNumber">  
     手机号快捷登录  
    </button>  

    这样两个 open-type 不再叠加,页面不会被强制刷新。

  2. 如果仍想保留“一键”体验,可降级到基础库 3.12.x 以下(通过“开发管理-基础库最低版本”设置),或提示用户升级微信到 8.0.15 以上(官方在 8.0.15 已修复)。

  3. 使用 uni.login 先拿 code,再引导用户手动填写手机号验证码(绕过 getPhoneNumber),也能完全避开该 bug。

总结
不要在同一个 button 上同时声明 agreePrivacyAuthorization 和 getPhoneNumber;把两步拆开即可在鸿蒙 6 微信 8.0.14 下正常登录。

内容为 AI 生成,仅供参考
DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

原生如果也有问题,在微信小程序社区反馈,运行的表现uniapp 控制不了

  • rainbow57 (作者)

    我用微信原生小程序写的测试代码上没有这个问题

    2026-01-21 14:08

  • DCloud_UNI_OttoJi

    回复 rainbow57: 提供下完整代码,并说明 HBuilderX 版本、vue 版本、操作步骤

    2026-01-21 14:13

要回复问题请先登录注册