<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AuthenticationServices",
  "identifier" : "/documentation/AuthenticationServices/ASAuthorizationAppleIDProvider",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Authentication Services"
    ],
    "preciseIdentifier" : "c:objc(cs)ASAuthorizationAppleIDProvider"
  },
  "title" : "ASAuthorizationAppleIDProvider"
}
-->

# ASAuthorizationAppleIDProvider

A mechanism for generating requests to authenticate users based on their Apple ID.

```
class ASAuthorizationAppleIDProvider
```

## Overview

You use a provider to create a request ([`ASAuthorizationAppleIDRequest`](/documentation/AuthenticationServices/ASAuthorizationAppleIDRequest)), which you then use to initialize a controller ([`ASAuthorizationController`](/documentation/AuthenticationServices/ASAuthorizationController)) that performs the request:

```swift
let provider = ASAuthorizationAppleIDProvider()
let request = provider.createRequest()
let controller = ASAuthorizationController(authorizationRequests: [request])
```

On success, the controller’s delegate receives an authorization ([`ASAuthorization`](/documentation/AuthenticationServices/ASAuthorization)) containing a credential ([`ASAuthorizationAppleIDCredential`](/documentation/AuthenticationServices/ASAuthorizationAppleIDCredential)) that has an opaque [`user`](/documentation/AuthenticationServices/ASAuthorizationAppleIDCredential/user) identifier. You can use that identifier to later check the user’s credential state—for example, to see if authorization has been revoked—by calling the [`getCredentialState(forUserID:completion:)`](/documentation/AuthenticationServices/ASAuthorizationAppleIDProvider/getCredentialState(forUserID:completion:)) method:

```swift
let user = authorization.credential.user
provider.getCredentialState(forUserID: user) { state, error in
    // Check for error and examine the state.
}
```

## Topics

### Offering Sign In with Apple

[`ASAuthorizationAppleIDButton`](/documentation/AuthenticationServices/ASAuthorizationAppleIDButton)

A control you add to your interface that enables users to initiate the Sign In with Apple flow.

  <doc://com.apple.documentation/documentation/WatchKit/WKInterfaceAuthorizationAppleIDButton>

### Creating Requests

[`createRequest()`](/documentation/AuthenticationServices/ASAuthorizationAppleIDProvider/createRequest())

Creates a new Apple ID authorization request.

[`ASAuthorizationAppleIDRequest`](/documentation/AuthenticationServices/ASAuthorizationAppleIDRequest)

An OpenID authorization request that relies on the user’s Apple ID.

[`ASAuthorizationOpenIDRequest`](/documentation/AuthenticationServices/ASAuthorizationOpenIDRequest)

An OpenID authorization request.

### Getting State

[`getCredentialState(forUserID:completion:)`](/documentation/AuthenticationServices/ASAuthorizationAppleIDProvider/getCredentialState(forUserID:completion:))

Returns the credential state for the given user in a completion handler.

[`ASAuthorizationAppleIDProvider.CredentialState`](/documentation/AuthenticationServices/ASAuthorizationAppleIDProvider/CredentialState)

Possible values for the credential state of a user.

[`credentialRevokedNotification`](/documentation/AuthenticationServices/ASAuthorizationAppleIDProvider/credentialRevokedNotification)

A notification that indicates the user’s credentials have been revoked and they should be signed out.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)