C 端 app 现仅支持「手机号 + 短信验证码」登录(/infouser/user/lodeing,登录即注册)。本特性新增 Apple / Google / LINE 三方登录,降低台湾市场获客与登录摩擦。鉴权沿用现有自写 JwtUtil(HS256 JWT + Redis 会话),不引入新鉴权体系。
info_user_oauth 记录绑定关系)。info_user——已注册则关联到该老账号(写一条 oauth 绑定),未注册则新建账号后再绑定。不以邮箱做关联。sub(稳定用户ID),忽略 email。provider)。客户在登录页选 Apple/Google/LINE,客户端拿到 provider 凭证后调后端校验。
首次用某三方账号登录时,强制输手机号 + 短信验证码:手机号已注册→关联该账号;未注册→新建账号;随后建立 oauth 绑定。
已绑过该三方的账号再次登录,校验凭证通过即直接签发 token,免手机验证。
POST /infouser/user/oauthLogin {provider, credential, ...},后端校验 provider 凭证换取稳定 providerUid。oauth2/v2.1/token 换 access_token,再调 v2/profile 取 userId(Authorization Code 流程,不直接收前端 accessToken)。info_user_oauth:命中→校验用户 status/del_flag 正常后直接签发 token(claim provider)返回;未命中→缓存 {provider,providerUid} 到 Redis(短TTL),返回 needPhone + tempKey。POST /infouser/user/oauthBindPhone {tempKey, phone, code, ...}:取回缓存的 providerUid + 验短信码(复用 lodeing 逻辑,含万能码 8888)→ getuser(phone):已注册→关联;未注册→createUser 新建;随后 insert info_user_oauth(user_id, provider, provider_uid)。provider 字段(apple/google/line;手机号登录为 phone),供登录渠道统计或「未绑手机限制」类约束使用。@Anonymous 放行;受保护接口继续走 @Auth,零额外接入。id、user_id、provider(apple/google/line)、provider_uid、create_time。UNIQUE(provider, provider_uid) 用于按三方ID反查用户;user_id 普通索引。https://appleid.apple.com + exp。