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

AI を使って Auth0 を統合する

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

はじめに

1

新しいExpoプロジェクトを作成

このQuickstartでは、新しいExpoプロジェクトを作成します。ターミナルで:
これにより、最新のSDKを搭載し、ネイティブモジュールの連携に対応した最小構成のExpoアプリが作成されます。--template blank フラグを使うと、余計なボイラープレートのないシンプルな出発点を用意できます。
このSDKはカスタムのネイティブコードを必要とするため、Expo Goには対応していません。開発ビルドを作成するには、npx expo run:ios または npx expo run:android を使用する必要があります。
2

Auth0 SDKをインストールする

Auth0 React Native SDKをプロジェクトに追加します。
npx expo install を使用すると、お使いの Expo SDK のバージョンとの互換性を確保できます。SDK は Expo のプラグインシステムを通じて自動的に設定されます。
3

Expo Pluginを設定する

ネイティブの iOS および Android の設定を自動的に処理するように、Auth0 プラグインを設定します。Auth0 プラグインを含めるために、app.json を更新します。
app.json
{yourDomain} は、ご利用の Auth0 domain に置き換えてください (これは次のステップで確認できます) 。
重要: app.json で、iOS には bundleIdentifier、Android には package を定義する必要があります。これらの識別子は、Auth0 SDK がネイティブプロジェクトを正しく設定するために必要です。カスタムスキームを指定しない場合、SDK はバンドル識別子を URL スキームとして使用します。
customScheme は、特殊文字を含まない小文字である必要があります。この値は callback URL の構築に使用され、authorize() メソッドと clearSession() メソッドに渡す必要があります。
4

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

Expoアプリで使用できるように、Auth0アプリケーションを作成して設定します。
  1. Auth0 Dashboardに移動します
  2. アプリケーション > アプリケーション > Create Application をクリックします
  3. ポップアップでアプリ名 (例: Auth0 Expo Sample) を入力し、アプリの種類として Native を選択して Create をクリックします
  4. Application Detailsページで Settings タブに切り替えます
  5. DomainClient ID の値を控えます
  6. app.json のプラグイン設定にある domain の値を、ご自身のAuth0ドメインに更新します
Allowed Callback URLs:
許可されているログアウトURL:
{yourDomain} を実際の Auth0ドメイン (例: dev-abc123.us.auth0.com) に置き換えてください。
Allowed Callback URLs は、authentication 後にユーザーを安全にアプリケーションへ戻すための重要なセキュリティ対策です。一致する URL がない場合、login は失敗し、ユーザーはアプリにアクセスできず、代わりに Auth0 のエラーページが表示されます。Allowed Logout URLs は、サインアウト時にシームレスな user experience を提供するうえで不可欠です。一致する URL がない場合、ユーザーは logout 後にアプリケーションへリダイレクトされず、代わりに汎用的な Auth0 ページに移動します。callback URL の形式は次のとおりです: {customScheme}://{yourDomain}/{platform}/{bundleIdentifier or packageName}/callback。URL スキームには app.jsoncustomScheme が使われますが、パスには常に bundleIdentifier (iOS) または package (Android) が含まれ、カスタムスキームは含まれません。customScheme を指定しない場合、SDK は {bundleIdentifier}.auth0 / {packageName}.auth0 を URL スキームのデフォルトとして使用します。
重要: callback URL 内の customSchemeapp.json の Plugin 設定内の値と完全に一致し、パスに実際の bundleIdentifier (iOS) または package (Android) が含まれていることを確認してください。値が一致しないと authentication は失敗します。
5

アプリコンポーネントを設定する

選択した実装方法に合わせて、メインのアプリコンポーネントを設定してください。
App.js の内容を置き換え、アプリケーションを Auth0Provider コンポーネントで囲みます。
App.js
{yourDomain} は Auth0 ドメインに、{yourClientId} は Auth0 Dashboard の Client ID に置き換えてください。
Auth0Provider は SDK を初期化し、useAuth0 フックを通じてすべての子コンポーネントに認証コンテキストを提供します。customScheme パラメーターは、app.json のプラグイン設定の値と一致している必要があります。
authorize() メソッドは、安全なブラウザー (iOS では ASWebAuthenticationSession、Android では Chrome Custom Tabs) で Auth0 の Universal Login を開きます。clearSession() メソッドはユーザーをログアウトし、ブラウザーセッションと保存されている資格情報の両方を消去します。customScheme パラメーターは、app.json のプラグイン設定内の値と一致する必要があります。
6

アプリを起動する

デバイスまたはエミュレーターで Expo アプリをビルドして実行します。まず、ネイティブの iOS プロジェクトと Android プロジェクトを生成します。
次に、対象のプラットフォームで実行します。iOS の場合:
Android の場合:
想定されるフロー:
  1. アプリが起動し、“Log In” ボタンが表示される
  2. Log In をタップ → ブラウザが開き、Auth0 Universal Login が表示される
  3. ログインを完了する (サインアップまたはサインイン)
  4. ブラウザが閉じる → 自動的にアプリに戻る
  5. 名前、メールアドレス、アバターを含むユーザープロファイルが表示される
app.json のプラグイン設定を変更した場合は、npx expo prebuild --clean を実行して、更新した設定を反映したネイティブプロジェクトを再生成してください。
iOS Simulator で ASWebAuthenticationSession を使用するには、有効な Apple Developer アカウントが必要です。アカウントなしでシミュレータでテストする場合は、代わりに実機または Android エミュレータを使用してください。
チェックポイントこれで、Auth0 のログイン機能がデバイスまたはエミュレーター上で正常に動作するようになっているはずです。アプリはセキュアなブラウザー認証を使用し、デバイスの安全なストレージで資格情報を自動的に管理します。

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

”Invariant Violation: Native module cannot be null”

このエラーは、Expo Go で SDK を使用しようとすると発生します。解決策:Auth0 SDK には、Expo Go では利用できないカスタムネイティブコードが必要です。代わりに開発ビルドを使用してください。

Callback URL の不一致エラー

解決策:次の 3 つが完全に一致していることを確認してください。
  1. app.json のプラグイン設定内の customScheme
  2. authorize()clearSession() に渡す customScheme パラメーター
  3. Auth0 Dashboard の Callback URLs (アプリケーション → Your App → Settings → Application URIs)

“PKCE not allowed” エラー

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

Prebuild が失敗する、またはプラグインが適用されない

修正方法:

iOS ビルドが Pod エラーで失敗する

修正方法:

ユーザーによるキャンセルエラー

ログイン関数内で適切に処理してください。

iOS のアラートダイアログ

iOS では、ユーザーに “App Name” Wants to Use “auth0.com” to Sign In という許可ダイアログが表示されます。これは ASWebAuthenticationSession の想定内の動作です。続行するには、ユーザーが Continue をタップする必要があります。この動作をカスタマイズするには、エフェメラルセッションを使用できます (SSO は無効になります) 。
API 呼び出し用のアクセストークンを取得するには、getCredentials() メソッドを使用します。
ログイン時に offline_access scope を含めると、リフレッシュトークンを受け取れます: authorize({customScheme: 'auth0sample', scope: 'openid profile email offline_access'})。これによりトークンの自動更新が有効になります。
ユーザーがすでにログインしているかどうかを確認するには、hasValidCredentials() を使用します。
本番ビルドには、ローカルの開発ビルドではなく EAS Build を使用してください。EAS CLI をインストールします。
プロジェクトルートに eas.json を作成します。
eas.json
本番用にビルドします。

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

セキュリティ強化のため、HTTPS callback URL を使用してください。
Auth0 Dashboard で Android App Links を設定します。
  • Settings → Advanced Settings → Device Settings
  • アプリの SHA-256 フィンガープリントを追加
iOS Universal Links を設定します。
  • Xcode で Associated Domains capability を追加
  • Associated Domains に webcredentials:{yourDomain} を追加
Auth0 Dashboard でセキュリティ設定を確認します。
  • Advanced Settings で OIDC Conformant を有効にする
  • Token Expiration を適切に設定する
  • Brute Force Protection を設定する
  • 複数のデバイスと OS バージョンでテストする
  • ネットワーク障害に備えて適切なエラーハンドリングを実装する
本番アプリでは、セキュリティ強化のため、カスタムスキームではなく Universal Links (iOS) や App Links (Android) を使用した HTTPS callback URL の利用を検討してください。