Cotter's Passwordless SDK authenticates your user based on their device. It allows a seamless, fast, and secure way for your user to login to your React Native App.
Make sure you use version >= 0.2.0. Checkout additional steps , , and .
Step 2️: Wrap your root component with connectCotterWrapper
import {connectCotterWrapper} from 'react-native-cotter';
class MyApp extends Component {...}
export default connectCotterWrapper(MyApp);
Step 3️: Register user and trust this device
This method signUpWithDevice will register the user based on the user's identifier to Cotter and then trust the current device.
import { Cotter } from "react-native-cotter";
const register = (identifier) => {
// Signup the user and trust this device
var cotter = new Cotter(API_KEY_ID);
cotter.signUpWithDevice(
identifier, // User's email, phone or username
(response) => {console.log(response)}, // OnSuccess function
(error) => {console.log(error)}, // OnError function
);
};
// Returns the newly created User object in Cotter
// along with oauth tokens
{
"ID": "cccccccc-cccc-cccc-cccc-cccccccccccc",
"client_user_id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"created_at": "2020-06-09T03:50:04.005779Z",
"default_method": "TRUSTED_DEVICE",
"deleted_at": null,
"enrolled": [
"TRUSTED_DEVICE"
],
"identifiers": [
"hello@cotter.app"
],
"issuer": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"oauth_token": {
"access_token": "eyJhbGciOi...",
"auth_method": "TRUSTED_DEVICE",
"expires_in": 3600,
"id_token": "eyJhbGciOiJFU...",
"refresh_token": "6177:MufdKMIk2XP...",
"token_type": "Bearer"
},
"update_at": "2020-06-09T03:50:04.77575278Z"
}
Step 4️: Logging In from a Trusted Device
Use the signInWithDevice method to login with the same identifier as the one registered above.
import { Cotter } from "react-native-cotter";
const login = (identifier) => {
var cotter = new Cotter(API_KEY_ID);
cotter.signInWithDevice(
identifier, // User's email, phone or username
(response) => {console.log(response)}, // OnSuccess function
(error) => {console.log(error)}, // OnError function
);
}
{
"ID": 1361, // Event ID
"CreatedAt": "2020-02-27T22:22:48.705212512Z",
"UpdatedAt": "2020-02-27T22:22:48.705212512Z",
"DeletedAt": null,
"client_user_id": "1014", // your client's User ID
"issuer": "afcabd98-745f-4b9e-98de-af968d9951d3", // your API Key
"event": "<EVENT NAME>",// requested event (LOGIN, or TRANSACTION, etc)
"ip": "192.168.232.2",
"location": "Unknown",
"timestamp": "1582842167",
"method": "TRUSTED_DEVICE", // auth method: TRUSTED_DEVICE (other choices are PIN / BIOMETRIC)
"new": false, // Is this a new pending event. More explanation below about Non-Trusted Device
"approved": true, // Is this event approved.
"signature": "oonMGCAxp3..." // Signature to make sure this event comes from Cotter's server
}
🎉 You're Done
Now you can allow your users to Sign In with Device with just 1 tap. When your sessions expires, you can also Sign In User Silently by just calling the method signInWithDevice above.
Find a more detailed version of this guide in our Trusted Devices section