Comment on page
React Native – Sign in with Device
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.
In this guide we'll allow users to Sign In with Device using Cotter's SDK.
Make sure you're using
react-native
version < 0.63yarn
npm
yarn add react-native-cotter react-native-device-info rn-secure-storage react-native-randombytes react-native-camera react-native-svg react-native-securerandom buffer react-native-inappbrowser-reborn react-native-sha256
npx pod-install ios
npm install --save react-native-cotter react-native-device-info rn-secure-storage react-native-randombytes react-native-camera react-native-svg react-native-securerandom buffer react-native-inappbrowser-reborn react-native-sha256
npx pod-install ios
Make sure you use version >= 0.2.0. Checkout additional steps for Android, React Native < 0.60, and Manual Installation.
import {connectCotterWrapper} from 'react-native-cotter';
class MyApp extends Component {...}
export default connectCotterWrapper(MyApp);
This method
signUpWithDevice
will register the user based on the user's identifier
to Cotter and then trust the current device.JavaScript
Response
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": [
],
"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"
}
Use the
signInWithDevice
method to login with the same identifier
as the one registered above.JavaScript
Response
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
}

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.