我正在尝试使用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
}
}
根据我的调试,我知道在这两种情况下代码都被执行,并且email + fullname的范围在authorizationController中设置。
我希望在两种情况下都能看到“使用Apple登录”并要求输入我的全名以及是否想要隐藏我的电子邮件地址...
但它只在模拟器上发生。 在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"
谢谢你的帮助!:)
附言:在两种情况下,我都尝试使用同一Apple账户连接,因此我尝试查看了苹果配置,但如果这是问题,我不确定哪里出了问题。
identityToken
是稳定且唯一的,因此可以安全地用来恢复其他用户信息。 - Eugene Berdnikov