如何在经过身份验证后退出 Apple

Dip*_*bey 15 ios swift apple-sign-in

我的应用程序具有“使用 Apple 登录”帐户功能。我想知道Apple帐户是否有注销功能。

我尝试了以下但没有成功

    let request = ASAuthorizationAppleIDProvider().createRequest()

    request.requestedOperation = .operationLogout

    let authorizationController = ASAuthorizationController(authorizationRequests: [request])

    authorizationController.performRequests()
Run Code Online (Sandbox Code Playgroud)

Sie*_*ike 12

Apple 目前仅允许用户执行注销 (iOS/watchOS/tvOS) 或显示为撤销我们的权限。他们建议您在使用之前获取凭据的状态以检查撤销,如果发生这种情况删除任何本地信息(删除您存储它的用户标识符)(如果需要,可能会更改用户界面;例如显示登录看法)。

        let appleIDProvider = ASAuthorizationAppleIDProvider()
    appleIDProvider.getCredentialState(forUserID: KeychainItem.currentUserIdentifier) { (credentialState, error) in
        switch credentialState {
        case .authorized:
            // The Apple ID credential is valid.
            break
        case .revoked:
            // The Apple ID credential is revoked.
            break
        case .notFound:
            // No credential was found, so show the sign-in UI.
            break
        default:
            break
        }
    }
Run Code Online (Sandbox Code Playgroud)

您可以在注销时向用户提供提示,指导他们撤销设备设置并听取更改通知。

  • 如果他们不打算这样做,那么当用户尝试重新授权时,他们需要提供姓名/电子邮件凭据。有一种非常常见的边缘情况,即用户删除帐户,而企业在帐户删除后不会存档用户数据。该应用程序要么必须告诉用户撤销权限,要么设置自定义流程来收集电子邮件和姓名,这违背了此功能的大部分目的。 (4认同)
  • 上面的代码只是为了检查当前状态,您能否建议按照问题中的要求注销用户。 (3认同)
  • @莫希特G。如前所述;Apple 没有可用于“使用 Apple 登录”的注销功能。目前,用户必须进入“设置”应用程序并撤销权限。如果应用程序检测到已撤销状态;清除本地存储的任何本地 OAuth 或其他身份验证数据并需要重新身份验证。您还可以清除服务器上本地存储的令牌,然后无论“使用 Apple 登录”状态如何都需要重新进行身份验证。 (3认同)