Skip to main content

AI を使って Auth0 を連携する

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

はじめに

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

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

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

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

@capacitor/browser は、セキュアな認証のために、Auth0 Universal Login ページをデバイスのシステムブラウザー (iOS では SFSafariViewController、Android では Chrome Custom Tabs) で開きます。@capacitor/app はディープリンクイベントを監視し、ログイン後に Auth0 がリダイレクトした際の OAuth コールバックをアプリで処理できるようにします。
3

Auth0 App の設定

次に、Auth0 テナントに新しいアプリを作成します。Ionic Capacitor アプリでは、カスタム URL スキームのコールバックを使用する Native アプリケーションタイプを使用します。Auth0 アプリの設定方法は 3 つあります。Quick Setup ツール (推奨) を使う方法、CLI コマンドを実行する方法、または Auth0 Dashboard で手動設定する方法です。
Auth0 の Native アプリケーションを作成し、資格情報を取得します。アプリを作成したら、次の手順で使用する DomainClient ID の値を控えておきます。
callback URL と logout URL も Auth0 Dashboard で設定する必要があります。詳しくは、以下の URL 設定を参照してください。
Quick Setup または CLI を使用した場合は、Auth0 Dashboard でアプリの 設定 タブを開き、上記の Dashboard タブに記載されている callback URL と logout URL を設定してください。
4

Auth0プラグインを設定する

src/main.ts
  • useRefreshTokens: true — モバイルブラウザーではサードパーティ Cookie がブロックされるため、iframe ベースのサイレント認証は動作しません。リフレッシュトークンは /oauth/token エンドポイントを直接呼び出します。
  • useRefreshTokensFallback: false — モバイルでは利用できない iframe ベースのフォールバックを SDK が試行しないようにします。
  • router.isReady().then(...) — SDK が OAuth コールバックを処理する前に Vue Router が完全に初期化されるようにし、競合状態を防ぎます。
アプリケーションを閉じて再度開いた後も認証状態を維持するには、cacheLocationlocalstorage に設定するとよい場合がありますが、localstorage にトークンを保存することのリスクに注意してください。また、Capacitor アプリではデータが予期せず復元される可能性があるため、localstorage は 一時的 なものとして扱う必要があります。あわせて、Capacitor ドキュメントのストレージに関するガイダンスもご確認ください。
5

認証コンポーネントを作成する

コンポーネントファイルを作成する
以下のコードを新しいコンポーネントに追加し、既存のApp.vueHomePage.vueを更新してください。
6

アプリを起動する

まずはブラウザでテストしましょう:
ionic serve を使用してブラウザーで実行する場合、ブラウザーはカスタム URL スキームを処理できないため、カスタム URL スキームのリダイレクトは機能しません。ブラウザーでテストするには、src/main.tsredirect_uri を一時的に http://localhost:8100 に変更し、Auth0 Dashboard の Auth0 アプリにある Allowed Callback URLsAllowed Logout URLshttp://localhost:8100 を追加してください。Native 向けにビルドする前に、この変更を元に戻すことを忘れないでください。
デバイスまたはシミュレーターで実行するには、まず Native プラットフォームを追加します。
次に、ビルド、同期、実行を行います。
実行する前に、npx cap add を使って Native プラットフォームを追加する必要があります。これは各プラットフォームにつき一度だけ行えば十分です。事前に、そのプラットフォーム用のカスタム URL スキームを登録しておいてください。
Checkpointこれで、Ionic Vueアプリケーションで、ログイン、ログアウト、ユーザープロファイル情報を備えた、Auth0によるログイン機能がひととおり利用できるようになりました。

高度な使い方

認証後に OAuth コールバックをアプリに戻せるように、OS がルーティングできるようアプリのカスタム URL スキームを登録します。

iOS

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

Android

android/app/src/main/AndroidManifest.xml のメイン <activity> タグ内にインテントフィルタを追加します。
詳しくは、Create Deep Links to App Content を参照してください。
ネイティブプロジェクトのファイルを変更したら、変更を反映するために npx cap sync を実行してください。
authentication が必要なルートを保護するには、Auth0 Vue SDK に組み込まれている authGuard を使用します。
src/router/index.ts
authGuard は、未認証のユーザーを自動的に Auth0 Universal Login ページへリダイレクトします。ログイン後は、最初にアクセスしようとしていたルートに戻ります。
API 用のアクセストークンをリクエストするには、createAuth0 の設定で audience パラメータを設定します。
src/main.ts
次に、コンポーネント内で getAccessTokenSilently を使ってトークンを取得し、認証付きの API 呼び出しを行います。
src/components/ApiCall.vue
getAccessTokenSilently メソッドは、キャッシュからトークンを取得するか、必要に応じてリフレッシュトークンを使って自動的に更新します。
<script setup> よりも明示的な defineComponent パターンを使いたい場合、LoginButton コンポーネントは次のようになります。
src/components/LoginButton.vue
defineComponent パターンでは、子コンポーネントを明示的に登録し、setup() 関数から値を返す必要があります。どちらのパターンも Auth0 Vue SDK で完全にサポートされています。