Files
huihuiSquare/overview-huihui-auth-2026-07-21.md
2026-07-24 14:04:21 +08:00

2.4 KiB
Raw Permalink Blame History

会会用户体系打通 · 部署与验证概览

完成内容

digital-avatar-app 的短信验证码登录从「DEV_MOCK 模拟」切换为真实会会开放平台对接,并部署到测试环境 geo-server:/root/avatar-test

关键改动

  1. backend/routers/huihui_auth.py 重写
    • 真实端点:发码 POST /open/mobile/sms/codequery 参数)、登录 POST /open/login/tokenformDataloginType=code)。
    • 签名范式与会会官方 sign(1).js 逐字节一致:公共字段 appId/accessId/timestamp(12h hh)/signType(MD5)/signVersion(1.0)/accessSecret/nonce → 过滤空值 → 字典序 → k=v& → 末尾 accessSecret=secretKey → MD5/SHA256 大写。
    • 登录成功后建/链本地 users 表(按会会 userId 唯一),签发本系统 app_token 会话。
  2. 真实凭证入环境
    • geo-server:/root/avatar-test/.env(及本地 digital-avatar-app/.envHUIHUI_APP_ID / HUIHUI_ACCESS_ID / HUIHUI_ACCESS_SECRETHUIHUI_DEV_MOCK=false
    • .env 已被 .gitignorebackend/.dockerignore 排除,不会入库/入镜像。
  3. 时区 bug 修复(关键)
    • 容器默认 UTC会会网关按北京时间校验时间戳 → 签名被拒("签名验证失败")。
    • _get_timestamp() 改为显式 timezone(timedelta(hours=8)),与容器系统时区解耦(不用 ZoneInfoslim 镜像缺 tzdata

验证结果(测试环境)

接口 结果
POST /api/huihui/sms/send13800000001 网关 code=200 success, sent=true
POST /api/huihui/sms/login(假验证码) 网关 code=10000 验证码不正确(签名已接受)
GET /api/huihui/me(无 token 401 未登录(路由/鉴权门正常)
前端 :8099 → 后端 :8000 nginx /api 代理正常

待用户操作

在浏览器打开 http://192.168.1.188:8099 → 短信登录页 → 输入本人会会绑定手机号 → 获取真实验证码 → 登录。后端将调会会网关校验并写入 users 表,前端拿到 app_token + 会会资料后跳转。这是唯一未自动化的步骤(需真实手机号+真实验证码)。

排查笔记

  • 测试服务器宿主 :8000 另跑 ai-virtual-news-backend;容器映射 8011→8000,本地冒烟测试必须打 :8011
  • 部署前用独立脚本managed venv + httpx直连真实网关验证签名避免盲部署。