Sign In with Apple, for NativeScript
Requirements
- Go to the Apple developer website 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.
- Open your app's
App_Resources/iOS
folder and add this (or append) to a file namedapp.entitlements
.
Installation
tns plugin add nativescript-apple-sign-in
Demo app
If you're stuck or want a quick demo of how this works, check out the demo app:
git clone https://github.com/EddyVerbruggen/nativescript-apple-sign-in
cd nativescript-apple-sign-in/src
npm run demo.ios
API
isSignInWithAppleSupported
Sign In with Apple was added in iOS 13, so make sure to call this function before showing a "Sign In with Apple" button in your app.
On iOS < 13 and Android this will return false
.
import { isSignInWithAppleSupported } from "nativescript-apple-sign-in";
const supported: boolean = isSignInWithAppleSupported();
signInWithApple
Now that you know "Sign In with Apple" is supported on this device, you can have the user sign themself in (after they pressed a nice button for instance).
import { signInWithApple, SignInWithAppleAuthorization } from "nativescript-apple-sign-in";
signInWithApple(
{
// by default you don't get these details, but if you provide these scopes you will (and the user will get to choose which ones are allowed)
scopes: ["EMAIL", "FULLNAME"]
})
.then((result: SignInWithAppleAuthorization) => {
console.log("Signed in, credential: " + result.credential);
console.log("Signed in, familyName: " + result.credential.fullName.familyName);
// you can remember the user to check the sign in state later (see 'getSignInWithAppleState' below)
this.user = result.credential.user;
})
.catch(err => console.log("Error signing in: " + err));
getSignInWithAppleState
⚠️ This does not seem to work on a simulator!
If you want to know the current Sign In status of your user, you can pass the user
(id) you acquired previously.
import { getSignInWithAppleState } from "nativescript-apple-sign-in";
const user: string = "the id you got back from the signInWithApple function";
getSignInWithAppleState(user)
.then(state => console.log("Sign in state: " + state))
.catch(err => console.log("Error getting sign in state: " + err));