メインコンテンツへスキップ

AI を使って Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って、数分で Auth0 認証を自動的に追加できます。まず、Auth0 agent skills をインストールします。
次に、AI アシスタントに次のように指示します。
AI アシスタントが、Auth0 アプリケーションの作成、認証情報の取得、Auth0 Angular SDK と Capacitor プラグインのインストール、ディープリンクの設定、ネイティブブラウザー統合によるログイン/ログアウトフローの実装を自動的に行います。詳細については、Auth0 agent skills を参照してください。

はじめに

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

新しいプロジェクトの作成

Capacitor を使用して新しい Ionic Angular プロジェクトを作成
プロジェクトを開く
@ionic/cli パッケージを使用していることを確認してください (非推奨の ionic パッケージではありません) 。プロジェクト作成時に --npm-client に関するエラーが表示される場合は、CLI を更新してください。
2

Auth0 Angular SDK と Capacitor プラグインをインストール

Capacitor’s Browser プラグインおよび App プラグインと併せて、Auth0 Angular SDK をインストールします:
iOS 版の Capacitor Browser プラグインは SFSafariViewController を使用します。iOS 11 以降では、これは Safari と Cookie を共有しません。そのため、これらのデバイスでは SSO は機能しません。SSO が必要な場合は、ASWebAuthenticationSession を使用する互換性のあるプラグインを使用してください。
3

Auth0 アプリを設定する

次に、Auth0テナントで新しいアプリを作成し、プロジェクトに環境変数を追加します。Auth0アプリをセットアップするには、次の3つの方法があります。Quick Setupツールを使用する (推奨) 、CLIコマンドを実行する、またはDashboardから手動で設定する方法です。
ネイティブ Auth0 アプリを作成し、適切な設定値があらかじめ入力された環境ファイルをコピーします。アプリを作成したら、Auth0 DashboardSettings タブで Allowed Callback URLsAllowed Logout URLs を更新してください。YOUR_PACKAGE_ID は、capacitor.config.tsappId (デフォルト: io.ionic.starter) に置き換えます。Allowed Callback URLsAllowed Logout URLs:
4

Auth0 モジュールを構成する

前の手順で環境ファイルを配置したら、アプリでAuth0モジュールを設定します。
src/main.ts
provideAuth0 の設定には、次が含まれます。
  • useRefreshTokens: true — モバイルでは必須です。Capacitor アプリでは iframe ベースのサイレント認証を使用できないため、セッションの更新にはリフレッシュトークンを使用します。
  • useRefreshTokensFallback: false — モバイルでは必須です。ネイティブアプリでは利用できない iframe ベースのサイレント認証に SDK がフォールバックするのを防ぎます。
  • authorizationParams.redirect_uri — 認証後にアプリへリダイレクトして戻れるよう、アプリのカスタム URL スキームを使用します。
アプリケーションを閉じて再度開いたあとも認証状態を保持するには、cacheLocationlocalstorage に設定するとよい場合があります。ただし、localstorage にトークンを保存するリスクがあることに注意してください。また、Capacitor アプリでは localstorage は一時的なストレージとして扱う必要があります。Capacitor ドキュメントのストレージに関するガイダンスも確認してください。
5

ログイン、ログアウト、Profile コンポーネントを作成する

コンポーネントファイルを作成する
各コンポーネントに以下のコードを追加します。次に、Auth0 コールバックを処理するよう App コンポーネントを更新し、ホームページでコンポーネントを使用できるようにします。
src/app/app.component.ts の内容を次のように置き換えます。
src/app/app.component.ts
App Component の appUrlOpen イベントコールバックは、this.ngZone.run() でラップされています。これは必須です。Capacitor プラグインのコールバックは Angular の zone の外で実行されるため、これがないとログイン後の認証状態の変化を Angular が検出できません。詳しくは、Using Angular with Capacitor を参照してください。
6

アプリを実行する

まず、ブラウザーでテストしてください:
ブラウザーで ionic serve を実行する場合、ブラウザーはカスタム URL スキームを処理できないため、カスタム URL スキームによるリダイレクトは機能しません。ブラウザーでテストする際は、一時的に src/main.tsredirect_urihttp://localhost:8100 に変更し、Dashboard で Auth0 アプリの Allowed Callback URLsAllowed Logout URLshttp://localhost:8100 を追加してください。ネイティブ向けにビルドする前に、この変更を元に戻すのを忘れないでください。
デバイスまたはシミュレーターで実行するには、まずネイティブプラットフォームを追加します。
次に、ビルド、同期、実行を行います。
実行する前に、npx cap add を使用してネイティブプラットフォームを追加する必要があります。これはプラットフォームごとに一度だけ実行すれば十分です。カスタム URL スキームが登録されていることを確認してください (詳細は以下の Advanced Usage を参照) 。
チェックポイントこれで、Auth0 のログインページが localhost 上で正常に動作しているはずです

高度な使い方

--type=angular (--type=angular-standalone ではなく) でプロジェクトを作成した場合や、NgModule を使いたい場合は、AuthModule.forRoot で SDK を設定します。
src/app/app.module.ts
NgModule を使用する場合は、inject() ではなくコンストラクター (constructor(public auth: AuthService)) 経由で AuthService を注入してください。テンプレートでは @if の制御フロー構文ではなく、*ngIf="auth.user$ | async as user" を使用します。コンポーネントは standalone: true としてマークするのではなく、モジュール内で宣言する必要があります。
実機で認証をテストするには、各プラットフォームでカスタム URL スキームを登録します。

iOS

ios/App/App/Info.plist にカスタム URL スキームを登録します。
YOUR_PACKAGE_IDcapacitor.config.tsappId に置き換えてください。詳細は、Defining a Custom URL Scheme を参照してください。

Android

android/app/src/main/AndroidManifest.xml<activity> タグ内にインテントフィルターを追加します。
YOUR_PACKAGE_IDcapacitor.config.tsappId に置き換えてください。詳細は、Create Deep Links to App Content を参照してください。

ビルドしてデバイスで実行する

または Android の場合:
認証が必要なルートを保護するには、関数ベースのガードを使用します。
src/app/app.routes.ts
未認証のユーザーが保護されたルートに遷移すると、authGuardFn によって Auth0 のログインページへ自動的にリダイレクトされます。
API 呼び出しにアクセストークンを自動的に付与するように、HTTP インターセプターを設定します。
src/main.ts
次に、Angular の HttpClient を使って API を呼び出します。インターセプターによって Bearer トークンが自動的に付与されます。
src/app/api.service.ts
httpInterceptor.allowedList は、アクセストークンを付与する API エンドポイントを決定します。API 用のアクセストークンをリクエストするには、audience パラメーターを含めてください。YOUR_API_IDENTIFIER は、Auth0 Dashboard > APIs の識別子に置き換えてください。

次のステップ

詳細については、以下のリソースを参照してください。