Help prepare for 2025 → Answer 8 simple questions on our Fall Survey
Open Survey

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