AI を使って Auth0 を統合する
AI を使って Auth0 を統合する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って、数分で Auth0 認証を自動的に追加できます。インストール:次に、AI アシスタントに以下のように依頼します。AI アシスタントが、Auth0 アプリケーションの作成、認証情報の取得、
react-native-auth0 のインストール、ネイティブ依存関係の構成、認証フローのセットアップを自動的に行います。agent skills の完全なドキュメント →はじめに
新しい React Native プロジェクトを作成する
このクイックスタート用に、新しい React Native プロジェクトを作成します。ターミナルで次を実行します:次の内容でプロジェクトを設定します。
- 名前:
Auth0ReactNativeSample - パッケージ名:
com.auth0.samples.reactnative
Auth0アプリケーションを設定する
React Native アプリで使用する Auth0 アプリケーションを作成して設定します。許可されたログアウトURL:
- Auth0 Dashboard に移動します
- Applications > Applications > Create Application をクリックします
- ポップアップでアプリの名前 (例:
Auth0 React Native Sample) を入力し、アプリの種類としてNativeを選択して、Create をクリックします - Application Details ページで Settings タブに切り替えます
- ドメイン と クライアントID の値を控えます
{yourDomain} を実際の Auth0 ドメイン (例: dev-abc123.us.auth0.com) に置き換えます。Allowed Callback URLs は、認証後にユーザーが安全にアプリケーションへ戻れるようにするための重要なセキュリティ対策です。一致する URL がない場合、ログイン処理は失敗し、ユーザーはアプリにアクセスできず、代わりに Auth0 のエラーページが表示されます。Allowed Logout URLs は、サインアウト時にシームレスなユーザー体験を提供するうえで重要です。一致する URL がない場合、ユーザーはログアウト後にアプリケーションへリダイレクトされず、汎用の Auth0 ページに移動します。URL スキームには、コールバックが対象のアプリに確実にルーティングされるよう、バンドル識別子の後に
.auth0 を含めます。このクイックスタートでは、バンドル識別子は org.reactjs.native.example.auth0reactnativesample です。ネイティブプラットフォームを設定する
認証コールバックを処理できるように、iOS と Android の両方を設定します。Android の設定:
android/app/build.gradle を開き、defaultConfig 内にマニフェスト プレースホルダーを追加します。android/app/build.gradle
{yourDomain} は、Auth0 のドメイン (例: dev-abc123.us.auth0.com) に置き換えてください。iOS の設定:- AppDelegate.mm (Objective-C)
- AppDelegate.swift (Swift)
ios/Auth0ReactNativeSample/AppDelegate.mm を開き、URL を処理するメソッドを追加します。ios/Auth0ReactNativeSample/AppDelegate.mm
ios/Auth0ReactNativeSample/Info.plist を開き、URL スキームを追加します。閉じる </dict> タグの直前に次を追加してください:ios/Auth0ReactNativeSample/Info.plist
URL スキームには、バンドル識別子に
.auth0 を付加したものを使用します。これにより、ブラウザーでの認証完了後に、コールバックが対象のアプリへルーティングされます。Appコンポーネントを設定する
選択した実装方法に応じて、メインのアプリコンポーネントを設定します。
- Hooks ベース(Provider あり)
- クラスベース(Provider なし)
App.tsx の内容を次のように置き換え、アプリケーションを Auth0Provider コンポーネントでラップします。App.tsx
{yourDomain} は Auth0 のドメインに、{yourClientId} は Auth0 Dashboard のクライアントIDに置き換えます。ログインとログアウトを実装する
ログインとログアウトを処理する画面コンポーネントを作成します。フックベースのアプローチ (推奨) またはクラスベースのアプローチを選択できます。
- Hooks ベース(推奨)
- クラスベース
useAuth0 Hookを使用して src/MainScreen.tsx を作成します。src/MainScreen.tsx
authorize() メソッド (hooks) または auth0.webAuth.authorize() (class) は、セキュアなブラウザー (iOS では ASWebAuthenticationSession、Android では Chrome Custom Tabs) で Auth0 の Universal Login を開きます。clearSession() メソッドは、ユーザーをログアウトし、ブラウザーのセッションと保存済みの認証情報の両方をクリアします。チェックポイントこれで、Auth0 のログイン機能がデバイスまたはエミュレーターで完全に動作しているはずです。このアプリは安全なブラウザー認証を使用し、認証情報を自動的に管理します。
トラブルシューティングと高度な設定
よくある問題と解決策
よくある問題と解決策
アクセストークンの取得
アクセストークンの取得
アプリ起動時に認証状態を確認する
アプリ起動時に認証状態を確認する
ユーザーがすでにログインしているかどうかを確認するには、
hasValidCredentials() を使用します:本番環境へのデプロイ
本番環境へのデプロイ
本番環境にデプロイする前に
セキュリティ強化のため、HTTPS のコールバック URL を使用します:- Settings → Advanced Settings → Device Settings
- アプリの SHA-256 フィンガープリントを追加します
- Xcode で Associated Domains 機能を追加します
- Associated Domains に
webcredentials:{yourDomain}を追加します
Auth0Provider の localAuthenticationOptions を使用して生体認証を有効にしますAuth0 Dashboard でセキュリティ設定を確認します:- Advanced Settings で OIDC Conformant を有効にします
- トークンの有効期限 を適切に設定します
- Brute Force Protection を設定します
- 複数のデバイスと OS バージョンでテストします
- ネットワーク障害に備えて、適切なエラー処理を実装します