Эх сурвалжийг харах

docs: 017 名称展示增量补充 App 对接契约(fullName/getuserinfo 字段)

qmj 3 долоо хоног өмнө
parent
commit
24ca6b134a

+ 2 - 0
specs/017-oauth-login/oauth-app-frontend.md

@@ -22,6 +22,8 @@ Content-Type: application/json
 {"provider":"apple_rider","credential":"<identityToken>","cid":"<设备推送标识>","cidType":"<原有类型>","deviceToken":"<设备token>","voIPToken":"<语音推送token>"}
 ```
 
+Apple 首次授权时若凭证带用户共享姓名(`ASAuthorizationAppleIDCredential` 的 fullName 拼接),在同一请求追加可选字段 `"fullName":"<姓名>"`;后端验证通过后保存到该 Apple 绑定(2026-09-24 增量,供资料页展示第三方名称)。仅首次授权有值,后续登录不要求提交。
+
 已绑定返回 `{code:200,msg,data,token}`,商家返回现有商家登录视图。未绑定返回 `{code:200,msg,data:{status:"needPhone",tempKey}}`,进入手机验证页。
 
 绑定接口保持不变,端信息已保存在一次性 tempKey 中,禁止 App 自行指定角色或用户 ID:

+ 3 - 1
specs/017-oauth-login/plan.md

@@ -144,4 +144,6 @@ cid, cidType, deviceToken, voIPToken
 1. 扩展 `info_user_oauth`,新增可空字段 `provider_display_name`,为每个绑定身份保存第三方显示名称;迁移 SQL 按项目规则写入 `updatesql/sql.md`,不直接执行。
 2. LINE 登录校验取得 Profile 时保留 `displayName`,按 `(provider, provider_uid)` 更新该绑定名称;资料暂不可用时保留旧值。Apple 首次授权时由 App 获取共享的 `fullName` 并随凭证提交,后端在验证 Apple 身份后保存;历史空值不强制补录。
 3. 用户资料响应从当前登录会话确定渠道及对应绑定身份,提供该身份名称;仅凭 `user_id` 或 `provider` 不应在同一用户绑定多个同渠道身份时任意取一条。App 将其与 `info_user.nick_name` 分开显示;原有昵称修改接口不变。名称为空时只显示渠道,不以用户昵称冒充第三方名称。本增量不在 `info_user` 写“最近登录渠道”。
-4. 验证 LINE 名称变化、Apple 首次有名/无名及历史空值、同一用户多渠道切换、不同 `user_id` 不串名,并联调 App 展示。以上均为计划,尚未实现或验证。
+4. 验证 LINE 名称变化、Apple 首次有名/无名及历史空值、同一用户多渠道切换、不同 `user_id` 不串名,并联调 App 展示。
+
+2026-09-28 实施完成(test-202609v2,验证记录见 tasks.md)。对 App 的契约:`/oauthLogin` 新增可选 `fullName`(Apple 首次授权提交);JWT 新增 `providerUid` claim(gettoken 续签保真,App 无需处理);`/getuserinfo` 返回新增 `oauthProvider`(本次登录渠道,手机号会话为空)与 `providerDisplayName`(该渠道第三方名称,可空——空时 App 只展示渠道,不用昵称冒充)。LINE 名称由服务端在每次成功登录自动刷新,App 无额外操作。