Sign in with Apple always fails with "The user canceled the authorization attempt" despite correct entitlement configuration

Hi all, I tried to implement Apple Login in my Expo App for iOS (as I also want to use Google login and Apple makes Apple login mandatory in this case).

But I always get an error when I try to sign in.

Problem

Sign in with Apple never completes. The system sheet appears, the user taps "Continue", then the sheet shows "Sign up not completed" and the API returns:

ASAuthorizationError with message "The user canceled the authorization attempt"
(no error code is provided; the error object is otherwise empty)

This happens on every attempt, with no user cancellation involved.

What I have already verified

  1. App ID capability: APPLE_ID_AUTH is enabled with setting APPLE_ID_AUTH_APP_CONSENT = PRIMARY_APP_CONSENT (verified via App Store Connect API and visible as enabled in the Developer Portal UI).

  2. Provisioning profile: freshly generated AFTER enabling the capability. Decoded profile contains: <key>com.apple.developer.applesignin</key><array><string>Default</string></array>

  3. Signed binary: I downloaded the built IPA and inspected it. codesign -d --entitlements shows: com.apple.developer.applesignin = ["Default"] The embedded.mobileprovision inside the IPA is the newly generated one.

  4. No app extensions: the IPA contains no PlugIns directory, so there is no bundled extension missing the entitlement.

  5. Not account-specific: reproduced with two different Apple IDs (both with two-factor authentication enabled).

  6. Not bundle-ID or distribution-specific: reproduced with both com.enplace.app.dev (Ad Hoc) and com.enplace.recipes (App Store build distributed via TestFlight).

  7. No stale authorization: Settings > Apple Account > Sign in with Apple lists no entry for this app.

  8. Agreements: "Free Apps" agreement is active.

Expected

signInAsync() returns a credential with an identityToken.

Actual

Promise rejects with "The user canceled the authorization attempt" without any user cancellation, on every attempt, on all tested configurations.

Environment

  • Device: iPhone SE (Touch ID), iOS 26.5.2
  • Framework: React Native / Expo SDK 56 with expo-apple-authentication (wraps ASAuthorizationController; no custom native code involved)
  • The app bundles no app extensions
  • Capability was enabled on 2026-07-28; still failing on 2026-07-29

Has anyone found the actual cause for this? Several older threads describe the same symptom, but none of them ends with a resolution.

Resolved — the cause was a broken distribution certificate on my side, not a problem with Sign in with Apple itself.

Posting the full diagnosis because the symptom is extremely misleading and several older threads describe the same dead end.

What was actually wrong

My Apple Distribution certificate (managed by EAS / Expo) was faulty. Every build signed with it failed Sign in with Apple — both Ad Hoc and App Store/TestFlight. Deleting the certificate, revoking it in the Developer Portal, and generating a new certificate and provisioning profile fixed it immediately.

Why it was so hard to find

  1. The entitlements were correct the whole time. I inspected the signed IPA with codesign -d --entitlements and it showed com.apple.developer.applesignin = ["Default"]. The App ID capability, the provisioning profile and the embedded profile inside the IPA were all correct. Everything that can be inspected looked right — the certificate is the one layer that cannot be verified by looking at it.

  2. iOS disguises the failure as a user cancellation. The error returned is

    "The user canceled the authorization attempt"
    

    with no error code, even though no cancellation happened. This points the investigation at the user and away from the build.

  3. The error object looked empty but was not. Native error fields are non-enumerable, so JSON.stringify(error) printed {}. Iterating with Object.getOwnPropertyNames() reveals domain, code and userInfo.

How to find it quickly

Build a minimal native test project (SwiftUI + ASAuthorizationController, about 200 lines) and run it on the same device. Then narrow down in layers:

StepSetupResult
1Fresh bundle ID, Xcode-managed signingworked
2The real bundle ID, Xcode-managed signingworked
3The real app, built locally in Xcodeworked
4The real app via CI, new certificateworked

Steps 1–3 ruled out the device, the Apple ID, the App ID and the app code in about an hour. Everything before that — days of re-checking capabilities, regenerating profiles and comparing entitlements — found nothing, because nothing was wrong there.

Takeaway

If Sign in with Apple fails with "The user canceled the authorization attempt" and your entitlements and provisioning profile check out, regenerate the distribution certificate. And test with a minimal native project rather than inspecting configuration: the certificate is the one layer configuration checks cannot see.

Sign in with Apple always fails with "The user canceled the authorization attempt" despite correct entitlement configuration
 
 
Q