2.0 KiB
2.0 KiB
架构决策:下线未实现的微信网页 OAuth
日期:2026-08-02
决策:删除GET /api/wechat/authorize、GET /api/wechat/callback与WECHAT_REDIRECT_URI
保留:微信小程序手机号核验登录/api/user/wx-phone-login
背景
旧代码保留了一组公开网页 OAuth demo:授权地址使用 qrconnect,回调没有向微信换取身份,而是把请求中的 code 拼成 demo_openid_ 后返回“微信授权成功”。它不签发 Petstore session,但会对外表达不存在的身份核验结果,也让生产发布多维护一个实际不使用的 WECHAT_REDIRECT_URI。
当前试点只有小程序登录:客户端通过 getPhoneNumber 与 wx.login 获取一次性 code,后端 WechatMiniProgramService 分别向微信换取已核验手机号和 openid/unionid,再由 /api/user/wx-phone-login 建立真实账号与 session。Admin、H5 和小程序源码均未调用旧网页 OAuth 端点。
决策
- 删除
WechatController与只服务于它的WechatConfig;旧路径不再公开放行,也不提供伪成功兼容响应。 - 生产配置和 release preflight 不再要求
WECHAT_REDIRECT_URI;WECHAT_APPID、WECHAT_APPSECRET继续作为小程序服务必填项。 - 从机器本体和动作文档删除两个 deprecated/gap 入口,使本体只描述实际存在的 HTTP 契约。
- 不在本阶段补做 PC 扫码登录、公众号网页授权或第二套账号绑定模型;未来若有真实场景,必须以独立 PRD、威胁模型和新 API 契约重新设计。
兼容与发布影响
- 数据库无迁移,现有 session、用户、预约、报告和小程序登录不受影响。
- 若外部仍请求旧路径,将不再得到 demo 成功响应;这属于预期的 fail-closed 行为。
- 生产环境文件应删除废弃变量,避免运维人员误以为仍需配置网页回调。
- 三角色验收继续只验证微信小程序手机号核验、员工邀请手机号一致性和旧注册入口 410,不验证网页 OAuth。