当我使用苹果登录时,会弹出选择框。我选择使用密码继续,提示不完整

yir*_*xia 12 ios ios13

iOS13(测试版)Apple 登录错误

@available(iOS 13.0, *)
    func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
        // Handle error.
        crprint(error.localizedDescription)
    }
Run Code Online (Sandbox Code Playgroud)

无法完成操作。(com.apple.AuthenticationServices.AuthorizationError 错误 1000。)

小智 8

我昨天遇到了同样的问题,我已经按照以下步骤修复了它:

  1. 转到https://appleid.apple.com/account/manage,在Devices您应该找到您使用 Apple ID 登录的设备部分下,
  2. 找到无法使用 Apple SSO 的设备/模拟器,单击它,然后单击从帐户中删除,
  3. 返回您的设备/模拟器设置,它会要求您再次进行身份验证。当您成功进行身份验证后,Apple SSO 应该会再次工作

我不确定是什么导致了这个问题,可能是模拟器和 Apple ID 之间的一些问题。


sta*_*Man 3

就我而言,启动ASAuthorizationController包括请求ASAuthorizationPasswordProvider导致了错误。

\n\n
\n

无法完成操作。(com.apple.AuthenticationServices.AuthorizationError 错误 1000。)

\n
\n\n
\n\n

来自ASAuthorizationError.Code文档1000是为了unknown

\n\n
\n

ASAuthorizationError.Code.unknown

\n\n

由于未知原因,授权尝试失败。

\n\n

宣言

\n\n
case unknown = 1000\n
Run Code Online (Sandbox Code Playgroud)\n\n

参考:https://developer.apple.com/documentation/authenticationservices/asauthorizationerror/code/unknown \n

\n
\n\n

现在这并不是特别有帮助,但确实给了我一个ASAuthorizationController线索来检查我的设置,我试图用来自ASAuthorizationAppleIDProvider&的 2 个请求启动该设置ASAuthorizationPasswordProvider,如下所示:

\n\n
func loginWithAppleButtonPressed() {\n    let appleSignInRequest = ASAuthorizationAppleIDProvider().createRequest()\n    appleSignInRequest.requestedScopes = [.fullName, .email]\n\n    let anySignInRequest = ASAuthorizationPasswordProvider().createRequest()\n\n    let controller = ASAuthorizationController(authorizationRequests: [appleSignInRequest, \n                                                                       anySignInRequest])\n    controller.delegate = self\n    controller.presentationContextProvider = self\n\n    controller.performRequests()\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在启用了 2FA 的 Apple ID 的模拟器上尝试了此操作,并且还在具有另一个未启用 2FA 的 Apple ID 的设备上尝试过此操作,两次都只是authorizationController(controller:didCompleteWithError error:)这样。

\n\n
\n\n

解决方案:

\n\n

因此,为了简单起见,我ASAuthorizationControllerASAuthorizationAppleIDProvider像这样启动:

\n\n
func loginWithAppleButtonPressed() {\n    let appleSignInRequest = ASAuthorizationAppleIDProvider().createRequest()\n    appleSignInRequest.requestedScopes = [.fullName, .email]\n\n    let controller = ASAuthorizationController(authorizationRequests: [appleSignInRequest])\n    controller.delegate = self\n    controller.presentationContextProvider = self\n\n    controller.performRequests()\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

瞧\xc3\xa0!这次事情按预期进行了:

\n\n
    \n
  1. 使用具有 2FA 的 Apple ID 时\n\n
      \n
    • 弹出登录请求
    • \n
  2. \n
  3. 使用不带 2FA 的 Apple ID 时\n\n
      \n
    • 弹出错误告诉我启用 2FA
    • \n
    • 打电话authorizationController(controller:didCompleteWithError error:)error 1000
    • \n
  4. \n
\n\n
\n\n

因此,在我的情况下似乎ASAuthorizationPasswordProvider是罪魁祸首,但由于ASAuthorizationError.Code.unknown是一般错误情况,因此该解决方案可能不适合您。

\n\n

另外,就我而言,我只需要ASAuthorizationAppleIDProviderApple ID 登录,因此放弃了对ASAuthorizationPasswordProvider.

\n

  • 如果我不使用“ASAuthorizationPasswordProvider”,我将如何检索应用程序的凭据? (2认同)