A plugin that allows you to authenticate users with Sign In with Apple.
npm install @nativescript/apple-sign-in
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.
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>
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()
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))
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))
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(
options: SignInOptions
)
.then((result: User) => {
// handle the signed-in user data
})
.catch(err =>{
// handle error
});
Signs in a user with the specified SignInOptions object.
SignIn.getState(userID:string)
.then(state =>{
// do something with user status
})
.catch(err =>{
// handle error
});
Gets the current sign-in status of the user.
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. |
type SignInScopes = 'EMAIL' | 'FULL_NAME'
For more details, visit ASAuthorizationScope.
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.
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.
enum CredentialState {
Revoked = 'Revoked',
Authorized = 'Authorized',
NotFound = 'NotFound',
Transferred = 'Transferred'
}
For more details, visit ASAuthorizationAppleIDProviderCredentialState.
enum UserDetectionStatus {
Unsupported = 'Unsupported',
Unknown = 'Unknown',
LikelyReal = 'LikelyReal'
}
For more details, visit ASUserDetectionStatus.
Apache License Version 2.0