在 Web 应用程序中实现 Apple 登录(老式 ASP.NET,但这并不重要 - 问题可以视为简单的 HTML/JS POC),在 Apple 端点上调用方法授权:
\nhttps://appleid.apple.com/auth/authorize?client_id=...&redirect_uri=...&response_type=code%20id_token&state=...&response_mode=form_post&scope=name%20email\nRun Code Online (Sandbox Code Playgroud)\n我想获取用户的名字和姓氏。\n方法返回如下内容:\n{
\n "state": "xxx",\n "code": "yyy",\n "id_token": "zzz",\n "user": {\n "name": {\n "firstName":"John",\n "lastName":"Doe"\n },\n "email":"example@privaterelay.appleid.com"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nid_token 是 JWT,由用户的 Apple ID 和电子邮件组成,没有有关姓名的数据。
\n如您所见,我可以从用户属性中获取姓名。这是我所知道的唯一方法。
\n问题是,Apple 仅在我第一次请求时才返回此数据。这不是一个错误,而是一个功能:https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_js/configuring_your_webpage_for_sign_in_with_apple:
\n\n\n重要的
\nApple 仅在用户第一次授权\n应用程序时返回用户对象。从您的应用程序中保留此信息;后续\n授权请求不会\xe2\x80\x99 包含用户对象。
\n
因此,我存储这些数据以供稍后在工作流程中使用,我会将其存储在数据库中。
\n现在我的问题/疑问:
\n当用户删除他们的帐户时,我从数据库中删除他们的所有数据(由于合同、法律等原因,我必须这样做)。
\n当用户通过 Apple 登录再次注册时,我 ping Apple 端点,并且我不再获取用户数据(包括姓名)(因为上面引用的 Apple 政策)!
\n我应该做什么才能得到它?
\n小智 4
我正在做苹果登录后端部分,遇到了类似的问题。
适用于 iOS 13+
适用于 ANDROID/WEB Flow/IOS 13 以下
苹果回调中第一次,它向我们发送带有一次性代码(5 分钟到期)的名称。
当我们调用 token API 时使用此代码,它为我们提供 id_token JWT。
在令牌中,主题是 apple_user_uuid。
将其保留在同一个表中。
因此,现在在后端,您将始终拥有用 apple_user_uuid 标记的电子邮件、名字、姓氏,这对于 Apple id 来说保持不变。
如果用户删除您的帐户,也不要删除此映射。直到苹果提供修复程序。
| 归档时间: |
|
| 查看次数: |
5313 次 |
| 最近记录: |