就我而言,启动ASAuthorizationController包括请求ASAuthorizationPasswordProvider会导致错误。
未能完成操作。(com.apple.AuthenticationServices.AuthorizationError 错误 1000。)
从ASAuthorizationError.Code文档中;1000是为了unknown
ASAuthorizationError.Code.unknown
授权尝试因未知原因而失败。
宣言
case unknown = 1000
参考:https ://developer.apple.com/documentation/authenticationservices/asauthorizationerror/code/unknown
现在这并不是特别有用,但确实给了我一个线索来检查我ASAuthorizationController试图通过来自ASAuthorizationAppleIDProvider&的 2 个请求启动的设置ASAuthorizationPasswordProvider,如下所示:
func loginWithAppleButtonPressed() {
let appleSignInRequest = ASAuthorizationAppleIDProvider().createRequest()
appleSignInRequest.requestedScopes = [.fullName, .email]
let anySignInRequest = ASAuthorizationPasswordProvider().createRequest()
let controller = ASAuthorizationController(authorizationRequests: [appleSignInRequest,
anySignInRequest])
controller.delegate = self
controller.presentationContextProvider = self
controller.performRequests()
}
我在一个启用了 2FA 的 Apple ID 的模拟器上以及在另一个没有 2FA 的 Apple ID 的设备上尝试了这个,两次它都会去authorizationController(controller:didCompleteWithError error:),就是这样。
解决方案:
所以为了简单起见,我ASAuthorizationController只ASAuthorizationAppleIDProvider用这样的方式启动:
func loginWithAppleButtonPressed() {
let appleSignInRequest = ASAuthorizationAppleIDProvider().createRequest()
appleSignInRequest.requestedScopes = [.fullName, .email]
let controller = ASAuthorizationController(authorizationRequests: [appleSignInRequest])
controller.delegate = self
controller.presentationContextProvider = self
controller.performRequests()
}
瞧!这次事情按预期工作:
- 将 Apple ID 与 2FA 结合使用时
- 使用没有 2FA 的 Apple ID 时
- 弹出一个错误,告诉我启用 2FA
- 用
authorizationController(controller:didCompleteWithError error:)_error 1000
因此,在我的情况下似乎ASAuthorizationPasswordProvider是罪魁祸首,但由于ASAuthorizationError.Code.unknown是一般错误情况,因此此解决方案可能对您不起作用。
此外,在我的情况下,我只ASAuthorizationAppleIDProvider需要 Apple ID 登录,因此放弃了对ASAuthorizationPasswordProvider.