11

我正在尝试使用 Xcode(Beta 11.0 beta 6)设置 Apple 登录。

在模拟器上效果很好,但是当我在我的 iPhone (iOS 13.1) 上运行它时,我没有得到相同的显示。

在模拟器上:

在模拟器上

在 iPhone 上:

在 iPhone 上

这就是我所说的“使用 Apple 登录”的方式:

- (IBAction)signInWithApple:(id)sender {
    if (@available(iOS 13.0, *)) {
        ASAuthorizationAppleIDProvider *appleIDProvider = [[ASAuthorizationAppleIDProvider alloc] init];
        ASAuthorizationAppleIDRequest *request = [appleIDProvider createRequest];
        request.requestedScopes = @[ASAuthorizationScopeFullName,ASAuthorizationScopeEmail];
        ASAuthorizationController *authorizationController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
        authorizationController.delegate = self;
        authorizationController.presentationContextProvider = self;
        [authorizationController performRequests];
    } else {
        // Fallback on earlier versions
    }
}

根据我的调试,我知道在这两种情况下都会执行代码,并且在授权控制器中设置了电子邮件 + 全名范围。

我希望在这两种情况下都能看到使用苹果登录并询问我的全名以及是否想隐藏我的电子邮件......

但它只发生在模拟器上。在 iPhone 上,我只是“继续”,让我的脸认出来……就是这样。

在这两种情况下,这都是在以下情况下调用的:

-(void)authorizationController:(ASAuthorizationController *)controller
  didCompleteWithAuthorization:(ASAuthorization *)authorization  API_AVAILABLE(ios(13.0)){

    ASAuthorizationAppleIDCredential *appleIDCredential = authorization.credential;
...

但在模拟器的情况下,我可以获得

"appleIDCredential.identityToken"
"appleIDCredential.email"
"appleIDCredential.fullName"

在我的 iPhone 上,我只能获得以下值

"appleIDCredential.identityToken"

谢谢您的帮助 !:)

PS:在这两种情况下,我都尝试使用同一个 Apple 帐户进行连接,因此我尝试查看 Apple 配置,但我不确定是否是问题所在。

4

1 回答 1

8

似乎在模拟器上您会看到注册流程(第一次用户体验),而在您已经通过注册的设备上,现在您会看到登录流程(返回用户体验)。我不确定为什么模拟器不显示登录流程,但它对我来说也一样。

根据文档此线程,您在完成登录流程后不会获得用户信息(电子邮件和全名):

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

由于用户信息不会在任何后续 API 调用中与您的应用共享,因此您的应用应在您从 API 响应中收到信息后立即将其存储在本地。如果您的进程或网络随后出现故障,您可以从本地存储中读取信息并尝试再次处理。

有一种方法可以通过撤销您的应用程序对 Apple ID 的使用来返回您设备上的注册流程。为此,您可以转到设备设置 → 密码和帐户 → iCloud → 密码和安全 → 使用您的 Apple ID 的应用程序 → [NameOfYourApp] 应用程序 → 停止使用 Apple ID → 停止使用。

您也可以访问您的Apple ID 应用安全页面来执行此操作。它应该如下所示:

Apple ID 应用安全页面

我从What the Heck is Sign In with Apple 中获取了图片和一些提示?

于 2019-09-01T19:16:41.023 回答