前提条件: 開始する前に、以下がインストールされていることを確認してください。
- Flutter 3.0 以降 (Web 向けに設定済み)
- Dart 2.17 以降
- Flutter CLI の基本的な知識
flutter --versionFlutter Web アプリがない場合は、次のコマンドで作成します: flutter create --platforms=web my_appはじめに
Auth0 Flutter SDKをインストールする
Flutter CLI を使用して、Auth0 Flutter SDK をプロジェクトに追加します。SDK を使用するには、Web アプリケーションで Auth0 SPA JS ライブラリを読み込む必要があります。終了の
</body> タグの前に、次の <script> タグを web/index.html ファイルに追加します。web/index.html
Auth0アプリを設定する
次に、Auth0テナントに新しいアプリケーションを作成する必要があります。これは、CLI コマンドを実行して自動で行うことも、Auth0 Dashboard から手動で行うこともできます。
- CLI
- Dashboard
Auth0 アプリケーションを作成するには、プロジェクトのルートディレクトリで次のシェルコマンドを実行します。macOS / Linux:Windows (PowerShell):出力から ドメイン と client_id の値をコピーします。これらは次の手順で使用します。
まだ Auth0 CLI をインストールしていない場合は、次を実行します。その後、
auth0 login でログインします。SDK を設定する
Auth0 の ドメイン と クライアントID の値を使用して、
Auth0Web クラスのインスタンスを作成します。新しいファイル lib/auth0_service.dart を作成します。lib/auth0_service.dart
メインビューを作成
lib/main.dart の内容を以下のコードに置き換えてください。lib/main.dart
- 認証コールバックを処理するため、
initState()内でonLoad()が呼び出されます loginWithRedirect()はユーザーを Auth0 の Universal Login ページへリダイレクトしますlogout()はセッションをクリアし、アプリに戻るようリダイレクトします- ユーザープロファイル情報には
credentials.userからアクセスできます
チェックポイントこれで、http://localhost:3000 で Auth0 のログインページが完全に動作するようになっているはずです。次の操作を行うと、以下のようになります。
- 「Log In」をクリックすると、Auth0 の Universal Login ページにリダイレクトされます
- 認証を完了すると、アプリにリダイレクトされます
- 「View Profile」をクリックすると、ユーザー情報が表示されます
- 「Log Out」をクリックすると、アプリと Auth0 の両方からログアウトします
高度な使用
保護されたAPIの呼び出し
保護されたAPIの呼び出し
保護されたAPIを呼び出すためのアクセストークンを要求するように SDK を設定します。アクセストークンを使用して API を呼び出します。
lib/auth0_service.dart
カスタムログインパラメーター
カスタムログインパラメーター
ログインエラーの処理
ログインエラーの処理
サイレント認証
サイレント認証
ログインページを表示せずに、ユーザーがすでに認証されているかどうかを確認します。
トラブルシューティング
よくある問題と解決策
よくある問題と解決策
「Callback URL mismatch」エラー
問題: コールバックURLが Auth0 に設定されているURLと一致していません。解決方法: コード内のコールバックURLが Auth0 Dashboard の設定と完全に一致していることを確認してください。- Auth0 Dashboard → Applications → Your App → Settings に移動します
- Allowed Callback URLs に
http://localhost:3000が含まれていることを確認します - URL は完全に一致している必要があります (コード側で指定していない限り、末尾のスラッシュは付けないでください)
認証が機能しない
問題: ログインボタンをクリックしても何も起こらない、または認証に失敗します。解決方法:web/index.html で Auth0 SPA JS スクリプトが読み込まれていることを確認してください。</body> の前に配置する必要があります。ページを更新するとユーザーがログアウトされる
問題: ページを再読み込みするとユーザーセッションが維持されません。解決方法:- Auth0 Dashboard の Allowed Web Origins に
http://localhost:3000が含まれていることを確認します - Auth0Web インスタンスの作成時に
cacheLocation: CacheLocation.localStorageを使用します - ウィジェットの
initState()でonLoad()が呼び出されていることを確認します
「Invalid state」エラー
問題: 認証コールバック中に state が一致していません。解決方法:- ブラウザのキャッシュとローカルストレージを削除します
- ログイン中に複数のタブを開いていないことを確認します
- コールバックURLが正しいことを確認します
ブラウザコンソールで CORS エラーが発生する
問題: Cross-Origin Resource Sharing (CORS) エラーが発生しています。解決方法:- Auth0 Dashboard の Allowed Web Origins に
http://localhost:3000を追加します - ポート 3000 で実行していることを確認します (設定と一致している必要があります)
次のステップ
- Flutter Native App Quickstart - Auth0 を使用してネイティブモバイルアプリを構築する
- 保護されたAPIの呼び出し - アクセストークンを使用してバックエンド API を呼び出す
- Customize Universal Login - ブランドに合わせてログイン体験をカスタマイズする
- Add Social Connections - Google、GitHub などのソーシャルログインを有効にする
- Implement MFA - MFA を追加する
リソース
- Auth0 Flutter SDK GitHub - ソースコードとサンプル
- Flutter Documentation - Flutter の詳細
- Auth0 Community - コミュニティでサポートを得る