Skip to main content

AI を使って Auth0 を組み込む

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使えば、agent skills を利用して、数分で Auth0認証を自動的に追加できます。まず、Auth0 agent skills をインストールします。
次に、AI アシスタントに次のように依頼します。
AI アシスタントが、Auth0アプリケーションの作成、資格情報の取得、Auth0 React SDK と Capacitor プラグインのインストール、ディープリンクの設定、さらにネイティブブラウザー連携によるログイン/ログアウト フローの実装まで自動で行います。詳しくは、Auth0 agent skills をご覧ください。

はじめに

このクイックスタートでは、Capacitor を使用する Ionic React アプリケーションに Auth0認証 を追加する方法を紹介します。Auth0 React SDK と Capacitor のネイティブブラウザー連携を使って、ログイン、ログアウト、ユーザープロファイル機能を備えたモバイル対応アプリを構築します。
1

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

Capacitor を使って新しい Ionic React アプリを作成する
プロジェクトを開く
@ionic/cli パッケージ (非推奨の ionic パッケージではなく) を使用していることを確認してください。プロジェクトの作成時に --npm-client に関するエラーが表示される場合は、CLI を更新してください。
すでに Ionic React アプリがある場合は、Capacitor が有効になっていることを確認してください。ionic integrations enable capacitor を実行し、続けて npx cap init を実行すると追加できます。
2

Auth0 React SDK と Capacitor プラグインのインストール

Ionic のスターターテンプレートでは react@19.0.0 が作成されることがありますが、これは Auth0 React SDK と互換性がありません。まず、サポートされている React バージョンを使用していることを確認してください。
次に、Auth0 SDK と Capacitor プラグインをインストールします。
iOS の Capacitor Browser プラグインは SFSafariViewController を使用しますが、iOS 11 以降ではデバイス上の Safari と Cookie を共有しません。つまり、それらのデバイスでは SSO は動作しません。SSO が必要な場合は、ASWebAuthenticationSession を使用する互換性のあるプラグインを使用してください。
3

Auth0 Appを設定する

次に、Auth0 テナントで新しいアプリを作成し、プロジェクトに環境変数を追加します。Auth0アプリを設定する方法は3つあります。Quick Setupツールを使用する (推奨) 、CLIコマンドを実行する、またはAuth0 Dashboardから手動で設定する方法です。
このQuickstartでは、YOUR_PACKAGE_ID はアプリケーションのパッケージ ID を指します。これは capacitor.config.ts ファイル内の appId フィールドです (例: io.ionic.starter) 。詳しくは、Capacitor の Config schema をご覧ください。
Auth0 App を作成し、適切な設定値があらかじめ入力された .env ファイルをコピーします。アプリを作成したら、Auth0 Dashboard設定 を開き、Allowed Callback URLsAllowed Logout URLs を更新して、YOUR_PACKAGE_ID を実際のパッケージ ID に、YOUR_AUTH0_DOMAIN をご利用の Auth0 ドメインに置き換えます。
また、アプリケーションの種類Native に、トークンエンドポイント認証方式None に設定されていることも確認してください。
.env ファイルが存在することを確認してください: cat .env (Mac/Linux) または type .env (Windows)
4

Auth0Providerを設定する

src/main.tsx を開き、App コンポーネントを Auth0Provider でラップします。useRefreshTokensuseRefreshTokensFallback はモバイル向けの設定で、iOS および Android の Ionic アプリでは必要です。
src/main.tsx
  • useRefreshTokens: Android と iOS の Ionic では必須です。モバイルブラウザーではサードパーティ Cookie がブロックされるため、SDK は iframe ベースのサイレント認証ではなく、リフレッシュトークンを使用します。
  • useRefreshTokensFallback: モバイルでは iframe ベースのサイレント認証を利用できないため、SDK がそれを試行しないよう、false に設定する必要があります。
  • authorizationParams.redirect_uri: OS が Auth0 のコールバックをアプリに戻せるように、パッケージ ID をカスタム URL スキームとして使用します。
アプリケーションを閉じて再度開いたあとも認証を維持するには、cacheLocationlocalstorage に設定したくなるかもしれません。ただし、localstorage にトークンを保存するリスクには注意してください。Capacitor では、localstorage は一時的なものとして扱う必要があります。OS によって予期せず消去される可能性があります。ストレージに関する Capacitor のガイダンスを参照してください。Capacitor の Preferences プラグイン をトークンの保存に使用することは推奨しません。これは UserDefaults (iOS) と SharedPreferences (Android) を基盤としており、暗号化されていないうえ、クラウドに同期される可能性があるためです。より安全で永続的な保存の仕組みが必要な場合は、SDK でカスタムキャッシュ実装をサポートしています。
5

Login、Logout、Profile、コールバックの各ハンドラーを作成する

ファイルを作成する
次のコードスニペットを追加してくださいLoginButtonLogoutButtonopenUrlコールバックは、Capacitorのブラウザプラグインを使用して、アプリを完全に離れることなく、デバイスのシステムブラウザコンポーネント内でAuth0のログインページとログアウトページを開きます。App コンポーネントは appUrlOpen イベントをリッスンしており、Auth0 がカスタム URL スキームを使用してアプリにリダイレクトする際に発火します。handleRedirectCallback を呼び出して認可コードをトークンに交換し、その後ブラウザを閉じます。
デフォルトでは、SDK の loginWithRedirect メソッドは window.location.href を使用してログインページに移動するため、デバイスの既定のブラウザーアプリケーションが開きます。openUrlBrowser.open を使うように設定すると、認証フローをアプリ内で完結でき、ユーザー体験が向上します。
6

アプリを起動する

まずはブラウザでテストする
ブラウザーで ionic serve を実行する場合、ブラウザーはカスタム URL スキームを処理できないため、カスタム URL スキームのリダイレクト (io.ionic.starter://...) は機能しません。ブラウザーでテストするには、一時的に src/main.tsxredirect_urihttp://localhost:8100 に変更し、http://localhost:8100 を Auth0 Dashboard の Allowed Callback URLsAllowed Logout URLs に追加してください。Native 向けにビルドする前に、この変更を元に戻すことを忘れないでください。
デバイスまたはシミュレーターで実行するには、まず Native プラットフォームを追加します。
次に、ビルド、同期、実行を行います。
実行する前に、npx cap add を使ってネイティブプラットフォームを追加する必要があります。これは各プラットフォームにつき一度だけ行えば済みます。以降、npx cap sync を実行すると、ビルド済みの Web アセットがコピーされ、ネイティブプラグインが更新されます。
チェックポイントこれで、Ionic アプリで Auth0 login が完全に動作するようになっているはずです。デバイス上で実行している場合は、「Log in」をタップするとシステムブラウザーで Auth0 Universal Login ページが開き、認証後、ユーザーのプロファイルが表示された状態でアプリにリダイレクトされます。

高度な使い方

デバイスで Auth0 のコールバックを機能させるには、各プラットフォームでパッケージ ID をカスタム URL スキームとして登録します。iOSios/App/App/Info.plist に追加します。
ios/App/App/Info.plist
Androidandroid/app/src/main/AndroidManifest.xml のメイン <activity> 内にインテントフィルターを追加します。
android/app/src/main/AndroidManifest.xml
io.ionic.starter は、capacitor.config.ts の実際の appId に置き換えてください。
詳しくは、iOS は Defining a Custom URL Scheme、Android は Create Deep Links to App Content をご覧ください。
Auth0 の認証状態を使って、Ionic アプリケーション内の特定のルートを保護できます。
src/App.tsx
withAuthenticationRequired HOC は、未認証のユーザーが保護されたルートにアクセスしようとすると、自動的に Auth0 のログインページにリダイレクトします。
Auth0Provider を設定して API の audience を含め、getAccessTokenSilently メソッドを使ってバックエンド用のアクセストークンを取得します。
src/main.tsx
次に、コンポーネントから認証付きの API 呼び出しを行います。
src/ApiCall.tsx