rainbow57
rainbow57
  • 发布:2026-01-21 10:47
  • 更新:2026-01-29 16:56
  • 阅读:140

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

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版

第三方开发者工具版本号: 2.01.2510260 win32-x64

基础库版本号: 3.13.0

项目创建方式: CLI

CLI版本号: 5.0.8

示例代码:
<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(e) {  
      console.log('getPhoneNumber:>> ', e)  
    },  
    handleAgreePrivacyContract(e) {  
      console.log('handleAgreePrivacyContract:>> ', e)  
    }  

操作步骤:
<button class="login-button" open-type="agreePrivacyAuthorization|getPhoneNumber" :phone-number-no-quota-toast="false" @getphonenumber="getPhoneNumber">  
      手机号快捷登录  
    </button>  

真机测试,手机系统版本升级至鸿蒙6,点击“手机号快捷登录”,小程序会刷新

预期结果:

真机测试,手机系统版本升级至鸿蒙6,点击“手机号快捷登录”,小程序能正常执行getPhoneNumber函数

实际结果:

真机测试,手机系统版本升级至鸿蒙6,点击“手机号快捷登录”,小程序会刷新,不确定是否执行了getPhoneNumber函数

bug描述:

使用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写成微信原生组件引入,也存在相同的问题。

PS:在微信开发者工具上新疆小程序,页面上只有上面的登录按钮,然后使用相同的手机,则正常。

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

Ask小助手

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

作为 DCloud 官方人员,对该反馈进行评审如下:

  1. 信息完整性

    • 标题、描述、代码、复现步骤、预期/实际结果、运行平台(鸿蒙 6.0.0 / 微信 8.0.14.34 / 基础库 3.13.0)均已给出,基本完整。
    • 缺少:
      – HBuilderX 具体版本号(仅写“正式版”)。
      – 是否使用自定义组件或页面级 onShow/onLoad 中是否有重定向逻辑。
      – 控制台完整日志(是否伴随 crash 或 js 异常)。
    • 建议补充:manifest.json 中 “permissionScope” 是否已声明 getPhoneNumber,以及 app.json 是否声明了 privacyApi 相关字段。
  2. 复现可行性

    • 提供的两段 button 代码可直接粘贴运行,复现步骤也足够清晰:鸿蒙 6 真机 → 点击按钮 → 页面刷新。
    • 但缺少“页面刷新”的进一步描述:是整页白屏重载,还是当前页路由重新 onLoad?需要用户补充日志或录屏。
  3. 预期结果合理性

    • 预期“正常执行 getPhoneNumber”符合微信小程序官方文档;在鸿蒙系统上同样适用,因此预期合理。
  4. 实际结果是否误报

    • 根据知识库,鸿蒙 Next 平台对小程序 getPhoneNumber 事件本身无已知“点击即刷新”限制。
    • 但微信 8.0.14.34 已较旧(当前正式 8.0.50+),基础库 3.13.0 也低于最新 3.4.x;旧版本在鸿蒙 6 上存在兼容性问题。
    • 因此初步判断并非误报,但需用户先升级微信客户端与基础库后再验证。
  5. 版本与替代方案

    • 建议用户:
      1. 升级微信至 8.0.50 以上、基础库 3.4.x 以上后重测;
      2. 在 manifest.json → mp-weixin → requiredBackgroundModes 中移除不必要的 background fetch,防止触发重载;
      3. 若仍复现,可改用 uni.login + 后端解密手机号方案作为临时规避(参考 鸿蒙元服务登录接入流程)。
  6. 结论

    • 该反馈基本有效,但需补充 HBuilderX 精确版本、微信/基础库升级结果、控制台日志后再进一步定位。
    • 先按“升级微信客户端+基础库”处理,若升级后仍复现,请补充日志并 reopen issue。
内容为 AI 生成,仅供参考
DCloud_UNI_OttoJi

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

提供原生工程,提供 HBuilderX 工程。并说明你打印了哪些日志,哪些日志触发了哪些日志没有触发,总结下规律

要回复问题请先登录注册