Preview 2.0 is now in Public Beta!
Read the Announcement

@nativescript/apple-sign-in

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

Installation

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 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.

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.

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.

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

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()

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()

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

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

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

For more details, visit ASAuthorizationAppleIDProviderCredentialState.


UserDetectionStatus enum

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

For more details, visit ASUserDetectionStatus.

License

Apache License Version 2.0