- 新增全局隐私协议授权管理器 privacyManager,统一管理弹窗显示和授权结果 - 用 PrivacyModal 组件替代原先 Taro.showModal 实现,使用 open-type="agreePrivacyAuthorization" 的 Button 触发微信认可的隐私授权 - 在 app.tsx 中注册 onNeedPrivacyAuthorization 回调,通过 privacyManager.show 弹出隐私弹窗 - 登录和注册页面 useDidShow 钩子调用 ensurePrivacyAuthorized 函数预检隐私授权状态,避免授权失败 - 修复登录/注册接口调用,统一使用 request.post + SERVER_API_URL,修正错误接口地址及导入问题 - 新增隐私弹窗样式和逻辑,实现用户同意或拒绝后的正确流程处理 - 解决微信基础库 3.16.1+ 强制隐私协议授权导致敏感 API 调用失败问题
1.6 KiB
1.6 KiB
手机号授权登录修复概述
修复内容
-
隐私协议授权流程修复(
src/app.tsx)- 原代码在
onNeedPrivacyAuthorization中直接resolve({ event: 'agree' }),在基础库 3.16.1+ 下无法通过微信校验。 - 新增
src/components/PrivacyModal,使用原生 Button 的open-type="agreePrivacyAuthorization"触发真正的隐私授权;Taro.showModal的按钮无法被微信识别。
- 原代码在
-
登录/注册页预检隐私协议
src/passport/login.tsx和src/passport/register.tsx在useDidShow中调用ensurePrivacyAuthorized(),避免用户点击授权按钮时因隐私协议未授权而失败。
-
统一接口调用
- 登录/注册页统一使用
request.post+SERVER_API_URL调用/wx-login/loginByMpWxPhone。 - 修复
register.tsx原本错误使用https://shop-api.websoft.top的问题。
- 登录/注册页统一使用
-
顺手修复构建错误
src/passport/pay/index.tsx引用了不存在的@/api/passport/wx-login,改为使用@/api/layout中的getWxOpenId/loginByOpenId。
验证
npx taro build --type weapp 构建成功。
需要你确认的后台配置
- 小程序管理后台 → 设置 → 第三方设置 → 用户隐私保护指引 → 添加「开发者收集你的手机号」声明。
- 确认小程序已开通「手机号快速验证组件」能力,且调用额度充足。
测试前清理
由于之前 Taro.showModal 的授权无效,微信可能已缓存该状态。重新上传后请先在开发者工具或真机中清理小程序缓存,再重新进入登录页,触发新的 PrivacyModal。