# auth-hub 集成说明 本应用不自己管账号——登录由 **auth-hub**(统一 SSO / OIDC 提供方)承接, 本仓库只做 OAuth2 client 侧的事。 ## 依赖的配置(backend/.env) | 变量 | 说明 | |---|---| | `AUTH_HUB_BASE_URL` | auth-hub 服务地址(生产 `http://129.146.26.249:5300`) | | `AUTH_HUB_CLIENT_ID` | 本应用在 auth-hub 注册的 client | | `AUTH_HUB_CLIENT_SECRET` | 对应 secret(**只放 .env,不入库**) | | `AUTH_HUB_REDIRECT_URI` | 回调地址,必须与 auth-hub 侧注册值完全一致 | ## 生产 client(甲骨文云主机,`garmin.zichuan.xyz`;2026-09-12 前是 NAS :8124) - client_id:`996aLPw4T5gl-rYZ` - 在 auth-hub 注册的回调: - `https://garmin.zichuan.xyz/auth/callback`(唯一注册的回调地址;NAS 时代 的 LAN / frp 地址已用 `manage_clients remove-redirect-uri` 清掉) - 注意 auth-hub 的 dev 与 prod 是**两套独立数据库、各自注册 client**: 在 dev auth-hub 上创建的 client 不能用于 prod,反之亦然。 ## 流程 1. 前端请求 `POST /api/auth/auth-hub/start` → 拿到 auth-hub 授权 URL,浏览器跳转; 2. auth-hub 登录后回调 `GET /api/auth/callback?code=…`; 3. 后端 `services/auth_hub_client.py`:`exchange_code_for_token`(换 token)→ `get_userinfo` → `find_or_create_user`(无则建号)→ 本应用签 JWT 返回前端。 本地邮箱/密码注册登录(曾经的 `/api/auth/register|login`)**已移除**。 Garmin 账号授权是另一条独立流程(见 routes/garmin.py 的 `/api/garmin/login`), 与 Web 登录无关。