メインコンテンツへスキップ
前提条件:
  • Flutter SDK 3.24.0+ と Dart 3.5.0+。
  • Windows 10 以降。
  • Desktop development with C++ ワークロードを含む Visual Studio 2022。
  • Auth0 アカウント — 無料でサインアップ
この機能は ベータ版 (auth0_flutter 2.1.0-beta.1) です。API は一般提供前に変更される可能性があります。
このガイドでは、OAuth 2.0 の Authorization Code Flow + PKCE を使用して auth0_flutter SDK を Flutter の Windows デスクトップアプリに組み込み、ログイン、ログアウト、ユーザープロフィールの表示を追加する方法を説明します。

はじめに

1

Flutter の Windows プロジェクトを作成する

Windows プラットフォームに対応した新しい Flutter プロジェクトを作成します。
Windows が利用可能か確認します:
一覧に Windows デスクトップ デバイスが表示されるはずです。
flutter doctor を実行して、環境が正しく設定されており、C++ によるデスクトップ開発を含む Visual Studio 2022 が検出されていることを確認してください。
2

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

Windows 対応を含む SDK のベータ版を追加します。
pubspec.yaml には次の内容を含めてください。
Auth0 Flutter SDK では Flutter 3.24.0+ および Dart 3.5.0+ が必要です。さらに、Windows プラットフォームでは、C++ によるデスクトップ開発ワークロードを含む Visual Studio 2022 も必要です。
3

Auth0 を設定

Windowsデスクトップでの認証に必要なコールバックURLを設定して、Auth0 アプリケーションを作成または構成します。
Auth0 Dashboard で、次の設定を使用して Native アプリケーションを作成します。認証情報:
  • ドメイン: {yourDomain}
  • クライアントID: {yourClientId}
auth0flutter://callback は、認証完了後にブラウザーのコールバックをデスクトップアプリケーションに戻すためのカスタムスキームURLです。
4

環境変数を設定する

プロジェクトのルートに .env ファイルを作成します。pubspec.yaml.env ファイルを Flutter のアセットとして追加します。
.env ファイルは絶対にバージョン管理にコミットしないでください。.gitignore に追加してください。
5

Windows ランナーを設定する

Windows 認証フローでは、アプリの runner で callback を処理する仕組みが必要です。Flutter plugin は、プロトコルスキームのアクティベーションを OS から自動的に受け取らないため、シングルインスタンス化の制御と URI の転送を追加する必要があります。windows/runner/main.cpp の内容を次のように置き換えます。このコードでは、次のことを行います。
  • Windows mutex を使用してシングルインスタンスを強制します。
  • コマンドライン引数として渡された auth0flutter://callback URI を取得します。
  • セカンダリ起動からの URI を、名前付きパイプ経由で実行中のインスタンスに転送します。
  • Auth0 plugin が読み取る PLUGIN_STARTUP_URL 環境変数を設定します。
6

独自のURLスキームを登録する

Windows がコールバック URI をアプリにルーティングできるように、auth0flutter をカスタム URL スキームとして登録します。windows/url_scheme.reg ファイルを作成します。C:\path\to\your\app.exe は、ビルドした実行可能ファイルの実際のパスに置き換えてください。開発中は通常、次のようになります。
.reg ファイルをダブルクリックして、Windows レジストリにインポートします。
本番環境で配布する場合は、.reg ファイルに頼るのではなく、アプリのインストーラー (MSIX、Inno Setup など) でカスタム URL スキームをプログラムから登録してください。
スキームが正しく機能することを確認します。コマンド プロンプトを開いて、次を実行します。
アプリが起動するか、すでに実行中の場合はフォアグラウンドに表示されます。
7

ログインとログアウトを実装する

Windows 認証を処理するため、lib/auth_service.dart を作成します。
Auth0 Flutter Windows SDK は現在、認証情報の管理をサポートしていません。アプリを再起動した後もセッションを維持する必要がある場合は、認証情報を手動で保存する必要があります。
8

ユーザープロフィールを表示する

lib/main.dart にメインアプリの UI を作成します。
9

アプリケーションを実行する

アプリをビルドして実行します:
想定されるフロー:
  1. アプリが起動し、ログイン ボタンが表示されます。
  2. ログイン を選択します。システムブラウザーで Auth0 Universal Login ページが開きます。
  3. ブラウザーで認証を完了します。
  4. ブラウザーが auth0flutter://callback にリダイレクトし、アプリがフォアグラウンドに戻ります。
  5. ユーザーの名前、メールアドレス、プロフィール画像が表示されます。
テストする前に、カスタム URL スキームが登録されていること (手順 6) を確認してください。これがないと、ブラウザーのコールバックでアプリケーションに戻れません。
チェックポイントこれで、Flutter Windows アプリケーションで Auth0 ログインが完全に動作するようになっているはずです。アプリは Auth0 Universal Login 用にシステムブラウザーを開き、カスタム URL スキーム経由でコールバックを受け取り、認証済みユーザーのユーザープロファイルを表示します。

トラブルシューティングと高度な使い方

ブラウザーは開くが、アプリがコールバックを受信しない

症状: ブラウザーでは Auth0 ログインに成功するが、アプリが認証情報をまったく受信しない。対処法:
  1. レジストリ エディターを開き、HKEY_CURRENT_USER\Software\Classes\auth0flutter\shell\open\command を確認して、.exe へのパスが正しいことを確認します。
  2. コマンド プロンプトで start auth0flutter://test を実行してテストします。アプリが起動するはずです。
  3. windows/runner/main.cpp に名前付きパイプ サーバーとミューテックスのコードが含まれていることを確認します。
  4. タスク マネージャーで古いインスタンスが実行されたままになっていないことを確認します。
  5. flutter clean && flutter run -d windows を実行して完全に再ビルドします。

認証が 5 分後にタイムアウトする

症状: ログインが途中で止まったように見え、最終的に失敗する。対処法: アプリがコールバック URI を受信していません。次を確認してください:
  1. レジストリ エントリが正しい実行可能ファイルのパスを指していること。
  2. ミューテックス名 auth0flutter_single_instance_mutexmain.cpp 内で一貫していること。
  3. ファイアウォールまたはアンチウイルスが名前付きパイプをブロックしていないこと。
  4. 古いインスタンスをすべて終了し、再ビルドすること。

URI を転送せずに 2 つ目のアプリ インスタンスが起動する

症状: 既存のアプリがコールバックを受信する代わりに、新しいウィンドウが開く。対処法:
  1. タスク マネージャーで実行中のインスタンスをすべて終了します。
  2. main.cpp 内でミューテックス名が一貫していることを確認します。
  3. 次のコマンドで再ビルドします: flutter clean && flutter run -d windows

WindowsWebAuthentication が見つからない

症状: windowsWebAuthentication を参照するコンパイル エラーが発生する。対処法: pubspec.yaml でベータ版が指定されていることを確認します:
更新するには flutter pub get を実行します。

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

症状: Auth0 から “redirect_uri_mismatch” エラーが返される。対処法:
  1. Auth0 Dashboard → Application Settings の Allowed Callback URLs が正確に auth0flutter://callback になっていることを確認します。
  2. コード内の appCustomURL パラメーターが 'auth0flutter://callback' と一致していることを確認します。
  3. 末尾のスラッシュや空白がないか確認します。
Auth0 がカスタム スキームに直接リダイレクトすると、ブラウザーにプロンプトが表示されたり、空白のタブが残ったりすることがあります。よりスムーズに利用するには、中継用の HTTPS サーバーを使用します:
  1. auth0flutter://callback?code=...&state=... にリダイレクトするサーバー エンドポイント (例: https://your-app.example.com/callback) を設定します。
  2. Auth0 Dashboard → Application Settings で、Allowed Callback URLshttps://your-app.example.com/callback に設定します。
  3. 両方の URL をログイン メソッドに渡します:
よりすっきりした動作にするために、サーバー ページでは “Redirecting…” を表示して自身を閉じることもできます。
追加のスコープまたは API のオーディエンスをリクエストします:
audience パラメーターを使用する前に、Auth0 Dashboardアプリケーション > APIs で API を設定してください。

次のステップ