roy*_*der 11 iphone ios ios13 xcode11 apple-sign-in
我正在尝试使用 Xcode(Beta 11.0 beta 6)设置登录 Apple。
在模拟器上运行良好,但是当我在我的 iPhone (iOS 13.1) 上运行它时,我没有得到相同的显示。
在模拟器上:

在 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
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的调试,我知道在这两种情况下都执行了代码,并且在授权控制器中设置了电子邮件 + 全名范围。
我希望在这两种情况下都能看到使用苹果登录并询问我的全名以及是否要隐藏我的电子邮件...
但它只发生在模拟器上。在 iPhone 上,我只是“继续”,让我的脸被识别......就是这样。
在这两种情况下,这都是在之后调用的:
-(void)authorizationController:(ASAuthorizationController *)controller
didCompleteWithAuthorization:(ASAuthorization *)authorization API_AVAILABLE(ios(13.0)){
ASAuthorizationAppleIDCredential *appleIDCredential = authorization.credential;
...
Run Code Online (Sandbox Code Playgroud)
但在模拟器的情况下,我能够得到值
"appleIDCredential.identityToken"
"appleIDCredential.email"
"appleIDCredential.fullName"
Run Code Online (Sandbox Code Playgroud)
在我的 iPhone 上,我只能获得
"appleIDCredential.identityToken"
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助 !:)
PS:在这两种情况下,我都尝试连接同一个 Apple 帐户,因此我尝试查看 Apple 配置,但我不确定是否有问题。
似乎在模拟器上您会看到注册流程(首次用户体验),而在您已经通过注册的设备上,现在您会看到登录流程(返回的用户体验)。我不确定为什么模拟器不显示登录流程,但它对我来说也是一样的。
根据文档和此线程,您将不会在登录流程完成后获得用户信息(电子邮件和全名):
确保您的应用将凭据和用户信息中继到您的应用服务器。API 会收集此信息,并在用户首次使用 Apple 登录登录应用程序时与您的应用程序共享。如果用户随后在另一台设备上使用 Apple 登录,则 API 不会再次询问用户的姓名或电子邮件。仅当用户停止使用 Apple 登录并稍后重新连接到您的应用程序时,它才会再次收集信息。
由于用户的信息不会在任何后续 API 调用中与您的应用共享,因此您的应用应在您从 API 响应中接收到信息后立即将其存储在本地。如果您的进程或网络出现后续故障,您可以从本地存储读取信息并再次尝试处理。
有一种方法可以通过撤销您的应用程序对 Apple ID 的使用来返回到您设备上的注册流程。为此,您可以转到设备设置?密码和帐户?云?密码和安全?使用您的 Apple ID 的应用程序?[NameOfYourApp] 应用程序?停止使用 Apple ID?停止使用。
您也可以访问您的Apple ID App Security 页面来执行此操作。它应该是这样的:
我拍了这张照片,并从“什么是苹果登录”中得到了一些提示?
| 归档时间: |
|
| 查看次数: |
6207 次 |
| 最近记录: |