Skip to content

Latest commit

 

History

History
196 lines (148 loc) · 6.33 KB

README.md

File metadata and controls

196 lines (148 loc) · 6.33 KB

@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

Name Type Description
user string For the description, visit user.
scopes SignInScopes[] Optional: By default, signIn() does not return any user's scopes. To return the scopes of interest, list them in the scopes array.
useOnce boolean
nonce string Optional: 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.

Name Type Description
nonce string Optional: See nonce for more information.
user string Always Provided
fullName UserFullName Optional
realUserStatus UserDetectionStatus Optional
authorizedScopes SignInScopes Optional
identityToken string Optional
email string Optional
identityToken string Always Provided
state string Always Provided
authorizationCode string Optional

For more details, visit ASAuthorizationAppleIDCredential.


UserFullName interface

Name Type Description
namePrefix string Optional
givenName string Optional
middleName string Optional
familyName string Optional
nameSuffix string Optional
nickname string Optional

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