Files
airz-uniapp/docs/微信与手机号登录开发-20261021.md
T
hujun 2c9d3feab5 feat: 完善登录流程、UI适配及协议文档更新
本次提交包含以下修改:
1. 新增微信登录相关服务及页面逻辑,实现首次微信绑定手机号流程
2. 优化产品匹配卡片 UI,移除不必要状态显示
3. 调整首页 scroll-view 属性及 banner 背景样式
4. 完善积分规则校验逻辑,增加时区及策略格式验证
5. 更新协议草案文档,补充资料清单及功能说明
6. 修复分析结果路由路径,适配新的匹配结果页面
7. 调整品牌 Logo 安卓端字体对齐样式
2026-10-22 11:24:15 +08:00

5.7 KiB
Raw Blame History

微信与手机号登录本地开发(2026-10-21)

本轮行为

  • 微信首次授权只取得10分钟绑定票据,此时不创建会员、不保存登录Token。
  • 用户手工输入中国大陆手机号,通过本次绑定专用短信验证码后登录。手机号已有账户时关联原userId;没有才注册。
  • 同一小程序内,每个微信身份和每个账户最多一条映射;绑定冲突明确拒绝,不自动覆盖或合并。
  • 已绑定的微信身份后续可直接登录;禁用账户不能登录。资料、报告、积分、累计用量继续归属原userId。
  • 微信登录必须确认已发布的用户协议和隐私政策;服务端验证版本与摘要并事务记录同意。协议未发布时既有密码登录例外继续保留,微信及验证码注册不能绕过。
  • 前端只在当前页面及原会话仍有效时接受结果,离页、取消、换账户后的迟到响应不会覆盖新会话。

范围与接口

本轮开放微信小程序授权适配。Android/iOS沿用公共手机号账户和手工验证码流程,原生微信SDK及对应应用配置留待App接入;H5和原生App隐藏微信入口。保留密码登录。用户后续明确要求保留运营商本机号码一键登录功能,并暂缓渠道准备、先还原按钮;登录页已恢复原一键登录图标及文字,点击显示“一键登录暂未开放”的原提示。实际运营商认证仍为Android/iOS待接入项,服务接通并完成真机验证后启用。

App一键登录与短信验证码登录共用现有账户:服务端验证运营商凭证并取得手机号后,存在则关联原userId,没有才注册,不能信任客户端直接提交的手机号。保留短信登录供其他号码或设备认证不可用时使用。一键登录需要开通认证服务并完成应用配置、授权页及双端真机测试;DCloud方案需要uniCloud核验取号再接入现有PHP后端,具体供应商尚未确定。微信小程序首次登录手输手机号并短信验证的规则继续适用。

三个POST端点,前缀/api/v1:

端点 用途
/auth/wechat-login 接收小程序code及两份协议确认,返回待绑定票据或认证结果
/auth/wechat/sms-code 按票据与手机号发送专用绑定验证码
/auth/wechat/bind-phone 核销验证码、关联账户并返回认证结果

精确请求与响应见设计。后端独立表、配置、迁移与渠道说明见D:/AAdesk/202609/airz/database/wechat-login.md,不得把既有脏schema.sql作为本轮迁移整体执行。

本地验证

  • 后续按钮恢复验证:一键登录原图标及文字已还原,点击显示原未开放提示,不发认证请求、不保存会话、不改输入内容;微信绑定期间隐藏,取消绑定后恢复。现有19+30回归及29页小程序编译通过;390×844/1280×900受控页面检查通过,微信入口并列显示使用仅测试运行期的平台替身。证据:D:/AAdesk/202609/airz-backups/quick-login-restore-20261021-r1,专用浏览器及Vite已关闭。
  • node scripts/test-wechat-login.cjs:19个实际UTS服务/页面逻辑场景通过,授权、HTTP和设备存储使用替身。
  • node scripts/test-agreements.cjs:30个协议/登录回归通过,无网络请求。
  • HBuilderX5.26:17:28再次完成微信小程序29页编译,退出码0,未上传或发行。
  • Playwright:本机H5,390×844和1280×900;普通H5入口隐藏、协议门禁、短信输入、微信绑定、取消、重新授权、验证及成功回跳通过,无相关控制台错误和外网请求。绑定页面通过仅浏览器运行期替换微信授权边界渲染,页面和HTTP服务代码保持真实,不能替代微信真机授权验收。
  • H5编译器对既有services/layout.uts的窗口尺寸API类型报告4项警告;页面运行、交互及小程序编译未失败,本轮未改动该文件。
  • 后端测试、审查和收尾证据见仓库外D:/AAdesk/202609/airz-backups/wechat-sms-login-20261021-r1。后端使用全新本机隔离数据库/Redis/ROOT,未加载生产.env;微信、短信均为测试供应商。
  • 后端394项检查、85次本机HTTP及多进程并发通过,主代理独立复跑通过;短信71项、账户短信271项、会话284项回归通过,13个PHP文件语法通过。独立审查两项问题均补失败测试并修复,定向复核通过。
  • 既有无关改动和脏schema.sql保持。隔离表/Redis已清空、仅本轮数据库已删除、所属服务退出、端口释放、随机测试凭据移除;专用浏览器和Vite已关闭。Redis停止的连接重置导致清理工具中断,确认服务实际退出后已完成收尾,详见仓库外backend/cleanup.json。

启用前待办

  1. 补齐主体等资料,审核并正式发布用户协议及隐私政策;本轮未把草案发布为正式协议。
  2. 审核独立身份表SQL、生产备份与恢复步骤,另行授权迁移和部署。
  3. 配置真实小程序AppID/Secret及可用短信渠道。微信配置默认关闭,凭据只存服务端环境。
  4. 完成测试环境真实短信、小程序真机授权、新老账户绑定及回跳验收,再决定发行。
  5. Android/iOS阶段分别接入原生授权SDK、应用配置与真机验证,不能把跨应用OpenID视为同一身份。
  6. 保留并接入Android/iOS运营商本机号码一键登录;确认服务商、开通及费用、完成服务端核验和统一账户关联、授权页与真机验证后开放入口,同时保留短信登录。

本轮仅本地开发,未提交、推送、创建PR、发布或修改生产环境,也未发送真实短信或调用微信/模型服务。