auth0-react-native

作成者: auth0

React NativeまたはExpoのモバイルアプリ(iOS/Android)に生体認証サポート付きの認証を追加する際に使用します - react-native-auth0 SDKをネイティブのディープリンクと統合します。

npx skills add https://github.com/auth0/agent-skills --skill auth0-react-native

Auth0 React Native Integration

Add authentication to React Native and Expo mobile applications using react-native-auth0.


Prerequisites

  • React Native or Expo application
  • Auth0 account and application configured as Native type
  • If you don't have Auth0 set up yet, use the auth0-quickstart skill first

When NOT to Use

  • Expo managed workflow - Use auth0-expo skill for Expo apps with config plugin
  • React web applications - Use auth0-react skill for SPAs (Vite/CRA)
  • React Server Components - Use auth0-nextjs for Next.js applications
  • Non-React native apps - Use platform-specific SDKs (Swift for iOS, Kotlin for Android)
  • Backend APIs - Use JWT validation libraries for your server language

Quick Start Workflow

1. Install SDK

Expo:

npx expo install react-native-auth0

React Native CLI:

npm install react-native-auth0
npx pod-install  # iOS only

2. Configure Environment

For automated setup with Auth0 CLI, see Setup Guide for complete scripts.

For manual setup:

Create .env:

AUTH0_DOMAIN=your-tenant.auth0.com
AUTH0_CLIENT_ID=your-client-id

3. Configure Native Platforms

iOS - Update ios/{YourApp}/Info.plist:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>None</string>
    <key>CFBundleURLName</key>
    <string>auth0</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>$(PRODUCT_BUNDLE_IDENTIFIER).auth0</string>
    </array>
  </dict>
</array>

Android - Update android/app/src/main/AndroidManifest.xml:

<activity
    android:name="com.auth0.android.provider.RedirectActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:host="YOUR_AUTH0_DOMAIN"
            android:pathPrefix="/android/${applicationId}/callback"
            android:scheme="${applicationId}" />
    </intent-filter>
</activity>

Expo - Update app.json:

{
  "expo": {
    "scheme": "your-app-scheme",
    "ios": {
      "bundleIdentifier": "com.yourcompany.yourapp"
    },
    "android": {
      "package": "com.yourcompany.yourapp"
    }
  }
}

4. Add Authentication with Auth0Provider

Wrap your app with Auth0Provider:

import React from 'react';
import { Auth0Provider } from 'react-native-auth0';
import App from './App';

export default function Root() {
  return (
    <Auth0Provider
      domain={process.env.AUTH0_DOMAIN}
      clientId={process.env.AUTH0_CLIENT_ID}
    >
      <App />
    </Auth0Provider>
  );
}

5. Use the useAuth0 Hook

import React from 'react';
import { View, Button, Text, ActivityIndicator } from 'react-native';
import { useAuth0 } from 'react-native-auth0';

export default function App() {
  const { user, authorize, clearSession, isLoading } = useAuth0();

  const login = async () => {
    try {
      await authorize({
        scope: 'openid profile email'
      });
    } catch (error) {
      console.error('Login error:', error);
    }
  };

  const logout = async () => {
    try {
      await clearSession();
    } catch (error) {
      console.error('Logout error:', error);
    }
  };

  if (isLoading) {
    return <ActivityIndicator />;
  }

  return (
    <View>
      {user ? (
        <>
          <Text>Welcome, {user.name}!</Text>
          <Text>{user.email}</Text>
          <Button title="Logout" onPress={logout} />
        </>
      ) : (
        <Button title="Login" onPress={login} />
      )}
    </View>
  );
}

6. Test Authentication

Expo:

npx expo start

React Native:

npx react-native run-ios
# or
npx react-native run-android

Detailed Documentation

  • Setup Guide - Automated setup, native configuration, deep linking
  • Patterns Guide - Secure storage, biometric auth, token refresh
  • API Reference - Complete SDK API, methods, configuration options

Common Mistakes

MistakeFix
Forgot to wrap app with Auth0ProviderAll components using useAuth0() must be children of Auth0Provider
Forgot to configure deep linkingAdd URL scheme to iOS Info.plist and Android AndroidManifest.xml (see Step 3)
Callback URL mismatchEnsure callback URL in Auth0 Dashboard matches your app's URL scheme (e.g., com.yourapp.auth0://YOUR_DOMAIN/ios/com.yourapp/callback)
iOS build fails after installRun npx pod-install to link native dependencies
App created as SPA type in Auth0Must be Native application type for mobile apps
Not handling auth errorsWrap authorize/clearSession calls in try-catch blocks
Deep link not working on AndroidVerify android:exported="true" is set on RedirectActivity

Related Skills

  • auth0-quickstart - Basic Auth0 setup
  • auth0-migration - Migrate from another auth provider
  • auth0-mfa - Add Multi-Factor Authentication
  • auth0-cli - Manage Auth0 resources from the terminal

Quick Reference

Core Hook API:

  • useAuth0() - Main hook for authentication
  • authorize() - Initiate login
  • clearSession() - Logout
  • user - User profile object
  • getCredentials() - Get tokens for API calls
  • isLoading - Loading state

Common Use Cases:

  • Login/Logout → See Step 5 above
  • Secure token storage → Automatic with Auth0Provider
  • Biometric authentication → Patterns Guide
  • API calls with tokens → Patterns Guide
  • Token refresh → Automatic with getCredentials()

References

auth0のその他のスキル

acul-screen-generator
auth0
ブランド化されたAuth0 Advanced Custom Universal Login(ACUL)画面の完全な実装を、ReactまたはVanilla JS SDKを使用して生成します。開発者が…と依頼した場合に使用します。
official
auth0-android
auth0
Androidアプリケーション(Kotlin/Java)にWeb Auth、生体認証で保護された認証情報、およびMFAを使用した認証を追加する際に使用します - 統合…
official
auth0-angular
auth0
AngularアプリケーションにルートガードとHTTPインターセプターを使用して認証を追加する際に使用します - SPA向け@auth0/auth0-angular SDKと統合します
official
auth0-aspnetcore-api
auth0
ASP.NET Core Web APIのエンドポイントをJWT Bearerトークン検証、スコープ/権限チェック、またはステートレス認証で保護する際に使用します - 統合…
official
auth0-cli
auth0
Auth0 CLIコマンドのリファレンス — アプリ、API、ユーザー、ロール、組織、アクション、ログ、カスタムドメイン、ユニバーサルログイン、Terraform、生APIモード、--json…
official
auth0-expo
auth0
Expo(React Native)モバイルアプリに認証を追加する際に使用 — ログイン、ログアウト、ユーザーセッション、保護されたルート、生体認証、トークン管理。統合…
official
auth0-express
auth0
Express.jsウェブアプリケーションに認証(ログイン、ログアウト、保護されたルート)を追加する際に使用します。セッションベースの認証のためにexpress-openid-connectを統合します。
official
auth0-fastapi-api
auth0
FastAPIのAPIエンドポイントをJWT Bearerトークン検証、スコープ/権限チェック、またはステートレス認証で保護する際に使用します。auth0-fastapi-apiを統合してREST…
official