メインコンテンツへスキップ
このクイックスタートは React Native フレームワーク向けです。Auth0 を Expo アプリケーションに統合する場合は、Expo クイックスタートを参照してください。

AI を使って Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って、数分で Auth0 認証を自動的に追加できます。インストール:
次に、AI アシスタントに以下のように依頼します。
AI アシスタントが、Auth0 アプリケーションの作成、認証情報の取得、react-native-auth0 のインストール、ネイティブ依存関係の構成、認証フローのセットアップを自動的に行います。agent skills の完全なドキュメント →

はじめに

1

新しい React Native プロジェクトを作成する

このクイックスタート用に、新しい React Native プロジェクトを作成します。ターミナルで次を実行します:
次の内容でプロジェクトを設定します。
  • 名前: Auth0ReactNativeSample
  • パッケージ名: com.auth0.samples.reactnative
これにより、最新の安定版の React Native アプリが作成されます。Auth0 SDK を使用するには、React Native 0.78.0 以降および React 19.0.0 以降が必要です。
2

Auth0 SDKをインストールする

Auth0 React Native SDK をプロジェクトに追加します。
iOS では、ネイティブの依存関係をインストールします。
SDK は両方のプラットフォームで自動的にリンクされます。pod install の手順で、必要な iOS ネイティブモジュール (Auth0.swift、JWTDecode、SimpleKeychain) がインストールされます。
3

Auth0アプリケーションを設定する

React Native アプリで使用する Auth0 アプリケーションを作成して設定します。
  1. Auth0 Dashboard に移動します
  2. Applications > Applications > Create Application をクリックします
  3. ポップアップでアプリの名前 (例: Auth0 React Native Sample) を入力し、アプリの種類として Native を選択して、Create をクリックします
  4. Application Details ページで Settings タブに切り替えます
  5. ドメインクライアントID の値を控えます
Allowed Callback URLs:
許可されたログアウトURL:
{yourDomain} を実際の Auth0 ドメイン (例: dev-abc123.us.auth0.com) に置き換えます。
Allowed Callback URLs は、認証後にユーザーが安全にアプリケーションへ戻れるようにするための重要なセキュリティ対策です。一致する URL がない場合、ログイン処理は失敗し、ユーザーはアプリにアクセスできず、代わりに Auth0 のエラーページが表示されます。Allowed Logout URLs は、サインアウト時にシームレスなユーザー体験を提供するうえで重要です。一致する URL がない場合、ユーザーはログアウト後にアプリケーションへリダイレクトされず、汎用の Auth0 ページに移動します。URL スキームには、コールバックが対象のアプリに確実にルーティングされるよう、バンドル識別子の後に .auth0 を含めます。このクイックスタートでは、バンドル識別子は org.reactjs.native.example.auth0reactnativesample です。
重要: コールバック URL スキームには、バンドル識別子の後に .auth0 を含める必要があります (例: org.reactjs.native.example.auth0reactnativesample.auth0://) 。これは、SDK が認証コールバックを適切に処理するために必要です。
4

ネイティブプラットフォームを設定する

認証コールバックを処理できるように、iOS と Android の両方を設定します。Android の設定:android/app/build.gradle を開き、defaultConfig 内にマニフェスト プレースホルダーを追加します。
android/app/build.gradle
{yourDomain} は、Auth0 のドメイン (例: dev-abc123.us.auth0.com) に置き換えてください。iOS の設定:
ios/Auth0ReactNativeSample/AppDelegate.mm を開き、URL を処理するメソッドを追加します。
ios/Auth0ReactNativeSample/AppDelegate.mm
ios/Auth0ReactNativeSample/Info.plist を開き、URL スキームを追加します。閉じる </dict> タグの直前に次を追加してください:
ios/Auth0ReactNativeSample/Info.plist
URL スキームには、バンドル識別子に .auth0 を付加したものを使用します。これにより、ブラウザーでの認証完了後に、コールバックが対象のアプリへルーティングされます。
5

Appコンポーネントを設定する

選択した実装方法に応じて、メインのアプリコンポーネントを設定します。
App.tsx の内容を次のように置き換え、アプリケーションを Auth0Provider コンポーネントでラップします。
App.tsx
{yourDomain} は Auth0 のドメインに、{yourClientId} は Auth0 Dashboard のクライアントIDに置き換えます。
Auth0Provider は SDK を初期化し、useAuth0 Hook を介してすべての子コンポーネントに認証コンテキストを提供します。
6

ログインとログアウトを実装する

ログインとログアウトを処理する画面コンポーネントを作成します。フックベースのアプローチ (推奨) またはクラスベースのアプローチを選択できます。
useAuth0 Hookを使用して src/MainScreen.tsx を作成します。
src/MainScreen.tsx
authorize() メソッド (hooks) または auth0.webAuth.authorize() (class) は、セキュアなブラウザー (iOS では ASWebAuthenticationSession、Android では Chrome Custom Tabs) で Auth0 の Universal Login を開きます。clearSession() メソッドは、ユーザーをログアウトし、ブラウザーのセッションと保存済みの認証情報の両方をクリアします。
7

アプリを起動する

デバイスまたはエミュレーターで React Native アプリをビルドして実行します。iOS の場合 (macOS が必要) :
Android の場合:
想定されるフロー:
  1. アプリを起動すると、「Log In」ボタンが表示されます
  2. Log In をタップ → ブラウザーが開き、Auth0 Universal Login が表示されます
  3. ログインを完了します (サインアップまたはサインイン)
  4. ブラウザーが閉じる → 自動的にアプリに戻ります
  5. ユーザープロフィールに名前、メールアドレス、アバターが表示されます
iOS Simulator で ASWebAuthenticationSession を使用するには、有効な Apple Developer アカウントが必要です。アカウントなしでシミュレータ上でテストする場合は、代わりに実機または Android エミュレータを使用してください。
チェックポイントこれで、Auth0 のログイン機能がデバイスまたはエミュレーターで完全に動作しているはずです。このアプリは安全なブラウザー認証を使用し、認証情報を自動的に管理します。

トラブルシューティングと高度な設定

「Callback URL mismatch」エラー

解決策:
  1. 正確な URL (.auth0 サフィックスを含む) が Auth0 Dashboard の Allowed Callback URLs に設定されていることを確認します
  2. iOS と Android の両方の URL が追加されていることを確認します
  3. {yourDomain} が実際の Auth0 ドメインに置き換えられていることを確認します

ログイン後にアプリに戻らない (iOS)

修正:
  1. Info.plist$(PRODUCT_BUNDLE_IDENTIFIER).auth0 を含む CFBundleURLSchemes エントリがあることを確認します
  2. AppDelegate.mm に URL を処理するメソッドが含まれていることを確認します
  3. URL スキームがバンドル識別子と一致していることを確認します

Android のビルドが失敗する

修正:
  1. build.gradleauth0Domainauth0Scheme のマニフェスト placeholders を追加します
  2. Gradle ファイルとプロジェクトを同期します
  3. ビルドをクリーンします: ./gradlew clean

「PKCE not allowed」エラー

修正:
  1. Auth0 Dashboard → Applications → Your Application に移動します
  2. アプリケーションの種類を Native に変更します
  3. 変更を保存して、もう一度試します

Pod install が失敗する (iOS)

修正:
  1. CocoaPods を更新します: sudo gem install cocoapods
  2. pod リポジトリを更新します: pod install --repo-update
  3. 問題が解消しない場合は、Podfile.lockios/Pods フォルダーを削除してから、再度 pod install を実行します

User cancelled エラー

ログイン関数で適切に処理します:

iOS のアラートダイアログ

iOS では、ユーザーに “App Name” Wants to Use “auth0.com” to Sign In という権限ダイアログが表示されます。これは ASWebAuthenticationSession の想定された動作です。続行するには、ユーザーが Continue をタップする必要があります。この動作を変更するには、ephemeral session (SSO を無効化) を使用できます:
API 呼び出し用のトークンを取得するには、getCredentials() メソッドを使用します:
リフレッシュトークンを受け取るには、ログイン時に offline_access スコープを含めます: authorize({scope: 'openid profile email offline_access'})。これにより、トークンを自動更新できるようになります。
ユーザーがすでにログインしているかどうかを確認するには、hasValidCredentials() を使用します: