🚀 8.9 Released! → ⚡️ New Node-API Engine Preview, 📲 ns widget ios, 💅 Tailwind v4 and more...
Read Announcement

View on GitHub

@nativescript/apple-sign-in ​

A plugin that allows you to authenticate users with Sign In with Apple.

Installation ​

cli
npm install @nativescript/apple-sign-in

Requirements ​

  1. Go to the Apple developer and create a new app identifier with the Sign In with Apple Capability enabled. Make sure you sign your app with a provisioning profile using that app identifier.

  2. Add the Sign In with Apple Entitlement to App_Resources/iOS/app.entitlements.

Then add the Sign In with Apple Entitlement to App_Resources/iOS/app.entitlements as follows:

xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>com.apple.developer.applesignin</key>
	<array>
		<string>Default</string>
	</array>
</dict>
</plist>

Use @nativescript/apple-sign-in ​

Check if Sign In with Apple is supported ​

Sign In with Apple was added in iOS 13. So, to check if it is supported on the device, call the static isSupported() method on SignIn.

On iOS < 13 and on Android, isSupported() returns false.

typescript
import { SignIn } from '@nativescript/apple-sign-in'

const supported: boolean = SignIn.isSupported()

Sign In With Apple ​

If Sign In with Apple is supported on the device, you can present the user with that option to sign in.

typescript
SignIn.signIn({
  scopes: ['EMAIL', 'FULLNAME'],
})
  .then((result: User) => {
    console.log('Signed in, user: ' + result)
    console.log('Signed in, familyName: ' + result.fullName.familyName)

    this.user = result.user
  })
  .catch((err) => console.log('Error signing in: ' + err))

Get a user's sign in status ​

To get the current Sign In status of a user, call the getState() passing it the user id(User.user) obtained from signIn() method.

typescript
import { SignIn } from '@nativescript/apple-sign-in'

const user: string = User.user

SignIn.getState(user)
  .then((state) => console.log('Sign in state: ' + state))
  .catch((err) => console.log('Error getting sign in state: ' + err))

API ​

isSupported ​

ts
isSupported: boolean = SignIn.isSupported()

Checks if Sign In with Apple is supported on the device. Returns true for iOS 13+, and false for iOS < 13 and on Android.


signIn() ​

ts
SignIn.signIn(
    options: SignInOptions

    )
    .then((result: User) => {
      // handle the signed-in user data
    })
    .catch(err =>{
        // handle error
    });

Signs in a user with the specified SignInOptions object.


getState() ​

ts
SignIn.getState(userID:string)
    .then(state =>{
        // do something with user status
    })
    .catch(err =>{
        // handle error
    });

Gets the current sign-in status of the user.


SignInOptions ​

NameTypeDescription
userstringFor the description, visit user.
scopesSignInScopes[]Optional: By default, signIn() does not return any user's scopes. To return the scopes of interest, list them in the scopes array.
useOnceboolean
noncestringOptional: See nonce for more information.

SignInScopes ​

ts
type SignInScopes = 'EMAIL' | 'FULL_NAME'

For more details, visit ASAuthorizationScope.


User object ​

The following are the properties of the User object returned by the signIn() method.

NameTypeDescription
noncestringOptional: See nonce for more information.
userstringAlways Provided
fullNameUserFullNameOptional
realUserStatusUserDetectionStatusOptional
authorizedScopesSignInScopesOptional
identityTokenstringOptional
emailstringOptional
identityTokenstringAlways Provided
statestringAlways Provided
authorizationCodestringOptional

For more details, visit ASAuthorizationAppleIDCredential.


UserFullName interface ​

NameTypeDescription
namePrefixstringOptional
givenNamestringOptional
middleNamestringOptional
familyNamestringOptional
nameSuffixstringOptional
nicknamestringOptional

For more details, visit NSPersonNameComponents.


CredentialState enum ​

ts
enum CredentialState {
  Revoked = 'Revoked',
  Authorized = 'Authorized',
  NotFound = 'NotFound',
  Transferred = 'Transferred',
}

For more details, visit ASAuthorizationAppleIDProviderCredentialState.


UserDetectionStatus enum ​

ts
enum UserDetectionStatus {
  Unsupported = 'Unsupported',
  Unknown = 'Unknown',
  LikelyReal = 'LikelyReal',
}

For more details, visit ASUserDetectionStatus.

License ​

Apache License Version 2.0