ASAuthorizationController 因现有设置流程而失败

ASAuthorizationController fails with existing setup flows

Apple 的示例表示使用下面显示的代码在登录视图出现后立即执行授权尝试。当代码运行时,我得到这个无用的错误:

[core] Authorization failed: Error Domain=AKAuthenticationError Code=-7001 "(null)" UserInfo={AKClientBundleID=com.....SignInWithApple}

我确实在共享网络凭据中存储了一些可以获取的东西。这是我正在使用的代码:

private func performExistingAccountSetupFlows() {   
  let requests = [
    ASAuthorizationAppleIDProvider().createRequest(),
    ASAuthorizationPasswordProvider().createRequest()
  ]

  appleSignInDelegates = SignInWithAppleDelegates(window: window)

  let controller = ASAuthorizationController(authorizationRequests: requests)
  controller.delegate = appleSignInDelegates
  controller.presentationContextProvider = appleSignInDelegates

  controller.performRequests()
}

我是不是漏掉了一步?

尝试下面的代码

func performExistingAccountSetupFlows() {
    let requests = [ASAuthorizationAppleIDProvider().createRequest()]
    // Create an authorization controller with the given requests.
    let authorizationController = ASAuthorizationController(authorizationRequests: requests)
    authorizationController.delegate = self
    authorizationController.presentationContextProvider = self
    authorizationController.performRequests()
    
  }

您无法在模拟器上运行此代码。这就是错误所说的内容,尽管它实际上 并没有这么说 。如果您 运行 在设备上运行正常。

所以只需将代码包装在 #if !targetEnvironment(simulator)

试试这个: 1) 点击 Apple 登录按钮 2) 向上滑动(轻轻地让应用程序不切换)屏幕底部的白色条。

弹出窗口有时似乎卡住了,这就是为什么不显示并记录此错误的原因。

现在很奇怪。

我使用 Apple's Juice example 大约一个星期,使用 Xcode 11 和 iPhone 8 模拟器。没有大问题。那么,今天post提出的问题就出现了。尝试了各种方法,对我有用的是切换到不同的模拟器-- iPhone 11. 一切又好了。

对我来说,进入设置 -> 所有者(您的)帐户 -> 密码和安全 -> Apple ID 登录 -> 您关注的应用程序 -> 停止使用 Apple ID 后它开始工作。 这将一直有效,直到您从 XCode 再次 运行,即直到您重新安装它。然后你必须再做一次。