This library provides Apple authentication for iOS standalone apps in the managed and bare workflows. Beginning with iOS 13, any app that includes third-party authentication options must provide Apple authentication as an option in order to comply with App Store Review guidelines. Learn more about Apple authentication on the "Sign In with Apple" website.
Installation in managed Expo projects
Installation in bare React Native projects
For bare React Native projects, you must ensure that you have installed and configured the
expo package before continuing.
Add the package to your npm dependencies
npx expo install expo-apple-authentication
Configure for iOS
npx pod-install after installing the npm package.
Setup iOS project
- Enable the "Sign In with Apple" capability in your app. For bare projects, enable the capability in Xcode under "Signing & Capabilities" -- you'll need to be on Xcode 11 or later.
- Log into the Apple Developer Console, go to "Certificates, Identifiers, & Profiles" and then "Identifiers".
- You need to choose a primary app for the Apple Sign In configuration. This is the app whose icon will show up in the Apple Sign In system UI. If you have a set of related apps you might choose the "main" app as the primary, but most likely you'll want to just use the app you're working on now as the primary.
- In the list of identifiers, click on the one corresponding to your primary app. Enable the "Sign In with Apple" capability, click "Edit", and choose the "Enable as a primary App ID" option. Save the new configuration.
- If you chose a different app to be the primary, you'll also need to open up the configuration page for your current app, enable the "Sign In with Apple" capability, click "Edit" and choose the "Group with an existing primary App ID" option. Save this configuration as well.
- Next, go to the "Keys" page and register a new key. Add the "Sign In with Apple" capability, and make sure to choose the correct primary app on the configuration screen.
- Finally, when you want to make a standalone build to test with, run
expo build:ios --clear-provisioning-profile --revoke-credentialsso that your provisioning profile is regenerated with the new entitlement.
Contributions are very welcome! Please refer to guidelines described in the contributing guide.