在真实设备上使用 Apple 登录无法获取姓名和电子邮件

Joh*_*nny 15 xcode applet ios ios13

因此,我正在使用 Apple 实现登录,在模拟器上一切正常,我请求电子邮件、fullName 范围、身份验证 UI 显示,并且我可以获得数据,如下图所示:

在此处输入图片说明 在此处输入图片说明

但是在真实设备(iPadOS 13、iPad 2018)上进行测试时,UI 没有显示(它不会在 UI 上询问姓名和电子邮件),而且我无法从响应中获取电子邮件、fullName,并且我也可以确认authorizedScopes是空的,我只能得到用户标识符

在此处输入图片说明 在此处输入图片说明

我相信这是一个错误,会提交雷达,也在苹果开发者论坛上发表了讨论(但他们通常不会批准我的帖子,我不知道为什么)

如果这不是错误,有人可以告诉我如何解决这个问题吗?谢谢

Joh*_*nny 23

问题解决了!tl;博士

这是预期的行为

苹果工程师回答(原文链接:https : //forums.developer.apple.com/thread/121496

嗨aslkdjalksdjasdasd,

这行为正确,用户信息仅在初始用户注册时在 ASAuthorizationAppleIDCredential 中发送。后续使用 Sign In with Apple 使用同一帐户登录您的应用程序不会共享任何用户信息,只会在 ASAuthorizationAppleIDCredential 中返回用户标识符。建议您安全地缓存包含用户信息的初始 ASAuthorizationAppleIDCredential,直到您可以验证帐户已成功在您的服务器上创建。

帕特里克

2019/12/15 编辑

此行为也记录在 Apple 的 Sign in with Apple 文档中,请查看文档

确保您的应用将凭据和用户信息中继到您的应用服务器。 API 会收集此信息,并在用户首次使用 Apple 登录登录应用程序时与您的应用程序共享。如果用户随后在另一台设备上使用 Apple 登录,则 API 不会再次询问用户的姓名或电子邮件。仅当用户停止使用 Apple 登录并稍后重新连接到您的应用程序时,它才会再次收集信息。

  • 您好,如果用户已经使用苹果登录,然后我们的服务器返回错误,导致我们的服务器检测到用户名长度不符合我们的条件,并且我们的代码没有缓存用户信息。我该如何解决这个问题?不告诉用户从设置页面停止使用apple id?谢谢你, (5认同)

小智 10

如果有人第一次存储“用户电子邮件”、“名字”失败,那么他应该按照以下步骤操作:

iPhone 设置 -> Apple Id -> 密码和安全 -> Apple ID 登录 -> {YOUR APP} > 停止使用 Apple ID。

  • iOS 14 中的一些文本似乎发生了变化,在我的手机上,流程如下所示:设置 -> Apple ID(带有头像图像的最顶行) -> 密码和安全 -> 使用 Apple ID 的应用程序 -> {应用程序名称或捆绑包ID} > 停止使用 Apple ID (2认同)
  • 我成功地使用我的应用程序为我的测试帐户执行了“停止使用 Apple ID”,并手动从数据库中删除了该用户。但我仍然无法强制应用程序进入原始流程,因此无法检索电子邮件和全名。这种令人惊讶的默认行为使得开发和测试变得困难:( (2认同)