Web3Auth / web3auth-react-native-sdk

MIT License
40 stars 20 forks source link

Web3Auth React Native SDK

Web3Auth is where passwordless auth meets non-custodial key infrastructure for Web3 apps and wallets. By aggregating OAuth (Google, Twitter, Discord) logins, different wallets and innovative Multi Party Computation (MPC) - Web3Auth provides a seamless login experience to every user on your application.

📖 Documentation

Checkout the official Web3Auth Documentation and SDK Reference to get started!

💡 Features

...and a lot more

⏪ Requirements

Selecting your Workflow

In React Native, you have the choice to use one of the following workflows:

⚡ Installation

npm install @web3auth/react-native-sdk

🌟 Configuration

Configure your Web3Auth project

Hop on to the Web3Auth Dashboard and create a new project. Use the Client ID of the project to start your integration.

Web3Auth Dashboard

Expo Managed Workflow

When using our SDK with a Expo-based React Native app (aka managed workflow, you have to install the expo-web-browser package as a WebBrowser implementation.)

expo install expo-web-browser

To allow the SDK to work with exported Expo Android apps, you need to place a designated scheme into app.json, like below:

{
  "expo": {
    "scheme": "web3authexposample"
  }
}

Bare workflow Configuration

When using our SDK with a bare workflow React Native app, you have to install a WebBrowser implementation made by us.

npm install --save @toruslabs/react-native-web-browser

Android

<data android:scheme="web3authrnexample" />

iOS

Register the URL scheme you intended to use for redirection

For example, the scheme mentioned is web3authrnexample and the redirectUrl mentioned is ${scheme}://openlogin, we will whitelist:

web3authrnexample://openlogin

💥 Initialization & Usage

In your sign-in activity', create an Web3Auth instance with your Web3Auth project's configurations and configure it like this:

Expo Managed Workflow

import * as WebBrowser from 'expo-web-browser';
import Web3Auth, { LOGIN_PROVIDER, OPENLOGIN_NETWORK } from "@web3auth/react-native-sdk";

const web3auth = new Web3Auth(WebBrowser, {
    clientId,
    network: OPENLOGIN_NETWORK.TESTNET, // or other networks
});
const info = await web3auth.login({
    loginProvider: LOGIN_PROVIDER.GOOGLE,
    redirectUrl: resolvedRedirectUrl,
    mfaLevel: 'mandatory', // optional
    curve: 'secp256k1', // optional
});

Bare Workflow

import * as WebBrowser from '@toruslabs/react-native-web-browser';
import Web3Auth, { LOGIN_PROVIDER, OPENLOGIN_NETWORK } from "@web3auth/react-native-sdk";

const web3auth = new Web3Auth(WebBrowser, {
    clientId,
    network: OPENLOGIN_NETWORK.TESTNET, // or other networks
});
const info = await web3auth.login({
    loginProvider: LOGIN_PROVIDER.GOOGLE,
    redirectUrl: resolvedRedirectUrl,
    mfaLevel: 'mandatory', // optional
    curve: 'secp256k1', // optional
});

🩹 Examples

Checkout the examples for your preferred blockchain and platform in our examples

🌐 Demo

Checkout the Web3Auth Demo to see how Web3Auth can be used in an application.

Further checkout the example folder within this repository, which contains a sample app.

💬 Troubleshooting and Support