Skip to main content

AI を使って Auth0 を統合する

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

はじめに

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

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

このQuickstart向けに、新しいFlutter Webアプリケーションを作成します:
プロジェクトを開く:
2

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

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

Auth0 Appを設定する

次に、Auth0 テナントに新しいアプリケーションを作成します。Auth0 App は、CLI コマンドを実行して自動的に設定することも、Auth0 Dashboard から手動で設定することもできます。
Auth0 アプリケーションを作成するには、プロジェクトのルートディレクトリで次のコマンドを実行します。
このコマンドにより、以下が実行されます:
  1. 認証済みかどうかを確認します (必要に応じてログインを求められます)
  2. http://localhost:3000 用に設定された Auth0 Single Page Application を作成します
  3. Auth0 ドメインとクライアント ID を Dart 定数として含む lib/auth_config.dart を生成します
4

SDKを設定する

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

メインビューを作成

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

アプリを実行する

ポート3000でFlutter Webアプリケーションを実行します:
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を呼び出します。
ログインフローに追加のパラメータを渡します。
認証の失敗に備えて、適切なエラー処理を実装します。
ログインページを表示せずに、ユーザーがすでに認証されているかどうかを確認します。

トラブルシューティング

「コールバック URL の不一致」エラー

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

認証が機能しない

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

ページを再読み込みするとユーザーがログアウトされる

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

「Invalid state」エラー

問題: 認証コールバック中に state の不一致が発生しています。解決策:
  1. ブラウザーのキャッシュとローカルストレージを消去します
  2. login 中に複数のタブを開いていないことを確認します
  3. コールバック URL が正しいことを確認します

ブラウザーコンソールでの CORS エラー

問題: クロスオリジン リソース共有エラーが発生しています。解決策:
  1. Auth0 Dashboard の Allowed Web Originshttp://localhost:3000 を追加します
  2. ポート 3000 で実行していることを確認します (設定と一致している必要があります)

次のステップ

認証が動作するようになったので、次の内容もぜひご確認ください。

リソース