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

AI を使って Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、Agent Skills を使って数分で Auth0 認証を自動的に追加できます。インストール:
次に、AI アシスタントに次のように依頼します:
AI アシスタントは、Auth0 アプリケーションの作成、認証情報の取得、auth0_flutter SDK 依存関係の追加、web/index.html の設定、コールバックURL の設定、ログイン/ログアウトフローの実装を自動的に行います。Agent Skills の完全なドキュメント →
前提条件: 開始する前に、以下がインストールされていることを確認してください。インストールを確認するには、次を実行します: flutter --versionFlutter Web アプリがない場合は、次のコマンドで作成します: flutter create --platforms=web my_app

はじめに

このクイックスタートでは、Flutter Web アプリケーションに Auth0 認証を追加する方法を説明します。Auth0 Flutter SDK を使用して、ログイン、ログアウト、ユーザープロファイル機能を備えたセキュアなシングルページアプリケーションを構築します。
1

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

このクイックスタート用に、新しい Flutter Web アプリケーションを作成します。
プロジェクトを開く:
2

Auth0 Flutter SDKをインストールする

Flutter CLI を使用して、Auth0 Flutter SDK をプロジェクトに追加します。
SDK を使用するには、Web アプリケーションで Auth0 SPA JS ライブラリを読み込む必要があります。終了の </body> タグの前に、次の <script> タグを web/index.html ファイルに追加します。
web/index.html
Flutter Web SDK を機能させるには、Auth0 SPA JS スクリプトが必要です。これがないと、認証は動作しません。
3

Auth0アプリを設定する

次に、Auth0テナントに新しいアプリケーションを作成する必要があります。これは、CLI コマンドを実行して自動で行うことも、Auth0 Dashboard から手動で行うこともできます。
Auth0 アプリケーションを作成するには、プロジェクトのルートディレクトリで次のシェルコマンドを実行します。macOS / Linux:
Windows (PowerShell):
出力から ドメインclient_id の値をコピーします。これらは次の手順で使用します。
まだ Auth0 CLI をインストールしていない場合は、次を実行します。
その後、auth0 login でログインします。
4

SDK を設定する

Auth0 の ドメインクライアントID の値を使用して、Auth0Web クラスのインスタンスを作成します。新しいファイル lib/auth0_service.dart を作成します。
lib/auth0_service.dart
YOUR_AUTH0_DOMAIN は Auth0 テナントのドメイン (例: dev-abc123.us.auth0.com) に、YOUR_AUTH0_CLIENT_ID はダッシュボードに表示されるアプリケーションのクライアントIDに置き換えてください。
cacheLocation: CacheLocation.localStorage を設定すると、ページを再読み込みしてもセッションが維持されます。
5

メインビューを作成

lib/main.dart の内容を以下のコードに置き換えてください。
lib/main.dart
重要なポイント:
  • 認証コールバックを処理するため、initState() 内で onLoad() が呼び出されます
  • loginWithRedirect() はユーザーを Auth0 の Universal Login ページへリダイレクトします
  • logout() はセッションをクリアし、アプリに戻るようリダイレクトします
  • ユーザープロファイル情報には credentials.user からアクセスできます
6

アプリを実行する

Flutter Web アプリケーションをポート 3000 で起動します:
Flutter 3.24.0 以降では、パフォーマンス向上のために WASM コンパイルをサポートしています。
チェックポイントこれで、http://localhost:3000 で Auth0 のログインページが完全に動作するようになっているはずです。次の操作を行うと、以下のようになります。
  1. 「Log In」をクリックすると、Auth0 の Universal Login ページにリダイレクトされます
  2. 認証を完了すると、アプリにリダイレクトされます
  3. 「View Profile」をクリックすると、ユーザー情報が表示されます
  4. 「Log Out」をクリックすると、アプリと Auth0 の両方からログアウトします

高度な使用

保護されたAPIを呼び出すためのアクセストークンを要求するように SDK を設定します。
lib/auth0_service.dart
アクセストークンを使用して API を呼び出します。
ログインフローに追加のパラメーターを渡します。
認証失敗に備えて適切なエラー処理を実装します。
ログインページを表示せずに、ユーザーがすでに認証されているかどうかを確認します。

トラブルシューティング

「Callback URL mismatch」エラー

問題: コールバックURLが Auth0 に設定されているURLと一致していません。解決方法: コード内のコールバックURLが Auth0 Dashboard の設定と完全に一致していることを確認してください。
  1. Auth0 Dashboard → Applications → Your App → Settings に移動します
  2. Allowed Callback URLshttp://localhost:3000 が含まれていることを確認します
  3. URL は完全に一致している必要があります (コード側で指定していない限り、末尾のスラッシュは付けないでください)

認証が機能しない

問題: ログインボタンをクリックしても何も起こらない、または認証に失敗します。解決方法: web/index.html で Auth0 SPA JS スクリプトが読み込まれていることを確認してください。
このスクリプトは、閉じタグ </body> の前に配置する必要があります。

ページを更新するとユーザーがログアウトされる

問題: ページを再読み込みするとユーザーセッションが維持されません。解決方法:
  1. Auth0 Dashboard の Allowed Web Originshttp://localhost:3000 が含まれていることを確認します
  2. Auth0Web インスタンスの作成時に cacheLocation: CacheLocation.localStorage を使用します
  3. ウィジェットの initState()onLoad() が呼び出されていることを確認します

「Invalid state」エラー

問題: 認証コールバック中に state が一致していません。解決方法:
  1. ブラウザのキャッシュとローカルストレージを削除します
  2. ログイン中に複数のタブを開いていないことを確認します
  3. コールバックURLが正しいことを確認します

ブラウザコンソールで CORS エラーが発生する

問題: Cross-Origin Resource Sharing (CORS) エラーが発生しています。解決方法:
  1. Auth0 Dashboard の Allowed Web Originshttp://localhost:3000 を追加します
  2. ポート 3000 で実行していることを確認します (設定と一致している必要があります)

次のステップ

認証が動作するようになったら、次の項目も確認してください。

リソース