Skip to main content
このQuickstartはReact Nativeフレームワーク向けです。Auth0をExpoアプリケーションに統合する場合は、Expo Quickstartを参照してください。

AI を使って Auth0 を統合する

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

はじめに

1

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

このQuickstartでは、新しい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. アプリケーション > アプリケーション > アプリケーションを作成 をクリックします
  3. ポップアップでアプリの名前 (例: Auth0 React Native Sample) を入力し、アプリの種類として Native を選択して Create をクリックします
  4. アプリケーションの詳細ページで 設定 タブに切り替えます
  5. DomainClient ID の値を控えます
Allowed Callback URLs:
許可されたログアウトURL:
{yourDomain} を実際の Auth0ドメイン (例: dev-abc123.us.auth0.com) に置き換えてください。
Allowed Callback URLs は、認証後にユーザーを安全にアプリケーションへ戻すための重要なセキュリティ対策です。一致するURLがない場合、ログインプロセスは失敗し、ユーザーはアプリにアクセスできず、代わりに Auth0 のエラーページが表示されます。Allowed Logout URLs は、サインアウト時にシームレスなユーザーエクスペリエンスを提供するうえで不可欠です。一致するURLがない場合、ログアウト後にユーザーはアプリケーションへリダイレクトされず、代わりに汎用的な Auth0 のページに遷移します。URLスキームには、コールバックが対象のアプリに確実にルーティングされるよう、bundle identifier の後に .auth0 を含めます。この Quickstart では、bundle identifier は org.reactjs.native.example.auth0reactnativesample です。
重要: コールバックURLスキームには、bundle identifier の後に .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 Component のセットアップ

選択した実装方法に応じて、メインのアプリコンポーネントを設定します。
App.tsx の内容を置き換え、アプリケーションを Auth0Provider コンポーネントでラップします。
App.tsx
{yourDomain} はご利用の Auth0 domain に、{yourClientId} は Auth0 Dashboard に表示される Client ID に置き換えてください。
Auth0Provider は SDK を初期化し、useAuth0 フックを通じてすべての子コンポーネントで認証コンテキストを利用できるようにします。
6

Implement Login と Logout

ログインとログアウトを処理する画面コンポーネントを作成します。フックベースのアプローチ (推奨) またはクラスベースのアプローチのいずれかを選択できます。
useAuth0 フックを使用して、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 アカウントが必要です。アカウントなしで Simulator 上でテストする場合は、代わりに実機または Android Emulator を使用してください。
チェックポイントこれで、お使いの端末またはエミュレーターで、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 スキームが bundle identifier と一致していることを確認します

Android のビルドが失敗する

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

「PKCE not allowed」エラー

修正方法:
  1. Auth0 Dashboard → アプリケーション → 対象のアプリケーション に移動します
  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 scope を含めてください: authorize({scope: 'openid profile email offline_access'})。これにより、トークンの自動更新が有効になります。
ユーザーがすでにログインしているかどうかを確認するには、hasValidCredentials() を使用します:

本番環境にデプロイする前に

セキュリティを強化するため、HTTPS のコールバックURLを使用してください。
Auth0 Dashboard で Android App Links を設定してください。
  • Settings → Advanced Settings → Device Settings
  • アプリの SHA-256 フィンガープリントを追加します
iOS Universal Links を設定してください。
  • Xcode で Associated Domains capability を追加します
  • Associated Domains に webcredentials:{yourDomain} を追加します
Auth0ProviderlocalAuthenticationOptions を使用して、機密性の高いアプリでは生体認証を有効にしてくださいAuth0 Dashboard でセキュリティ設定を確認してください。
  • Advanced Settings で OIDC Conformant を有効にします
  • Token Expiration を適切に設定します
  • ブルートフォース対策を設定します
  • 複数のデバイスと OS バージョンでテストします
  • ネットワーク障害に備えて適切なエラー処理を実装します