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

时间:2019-08-18 14:45:32

标签: ios xcode applet ios13

因此,我正在使用Apple实施登录,模拟器上的所有操作都正常进行,我请求电子邮件,fullName范围,身份验证UI显示,并且我可以获取数据,如下图所示:

enter image description here enter image description here

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

enter image description here enter image description here

我相信这是一个错误,将引起人们的注意,并在Apple开发人员论坛上发布了讨论(但他们通常不会批准我的帖子,我不知道为什么)

如果这不是bug,有人可以告诉我如何解决吗? 谢谢

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:8)

问题解决了! tl; dr

这是预期的行为

Apple工程师解答 (原始帖子链接:https://forums.developer.apple.com/thread/121496

  

你好aslkdjalksdjasdasd,

     

这是正确的行为,用户信息仅在初始用户注册后才通过ASAuthorizationAppleIDCredential发送。后续的   使用具有相同帐户的Apple登录使用您的应用程序登录   不分享任何用户信息,并且只会在   ASAuthorizationAppleIDCredential。建议您安全   缓存包含用户的初始ASAuthorizationAppleIDCredential   信息,直到您可以验证帐户已成功   在您的服务器上创建。

     

帕特里克

2019/12/15编辑

此行为也记录在Apple的“使用Apple文档登录”中,选中documentation

  

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