Flutterアプリケーションにログインを追加する
Auth0を使用すると、アプリケーションに手軽に認証を追加して、ユーザープロファイル情報にアクセスできます。このガイドでは、FlutterアプリにAuth0 Flutter SDKを使ってAuth0を統合する方法を説明します。
このクイックスタートでは、すでにFlutterアプリが問題なく作動しているものとします。そうでない場合は、Flutter「入門」ガイドをチェックして、シンプルなアプリの始め方をご確認ください。
Flutterコマンドラインツールの知識も必要になります。
Auth0のサービスを利用するには、Auth0 Dashboadに設定済みのアプリケーションがある必要があります。Auth0アプリケーションは、プロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。
Auth0アプリケーションを構成する
対話型のセレクターを使ってAuth0アプリケーションを新規作成するか、既存のネイティブのAuth0アプリケーションを選択します。Auth0のすべてのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。
このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションを自動更新します。今後、アプリケーションの管理もDashboardで行えます。
完了済みの構成を見てみたい場合は、サンプルアプリをご覧ください。
Callback URLとログアウトURLを構成する
Callback URLとログアウトURLは、ユーザーをアプリにリダイレクトで戻すために、Auth0が呼び出すURLです。 Auth0は、ユーザーを認証した後にCallback URLを呼び出し、セッションのクッキーを削除した後にログアウトURLを呼び出します。Callback URLとログアウトURLを設定しないと、ユーザーはアプリにログインやログアウトが行えなくなり、エラーが発生します。
プラットフォームに合わせて、Callback URLとログアウトURLに以下の値を設定します。
Android
SCHEME://{yourDomain}/android/YOUR_PACKAGE_NAME/callback
iOS
https://{yourDomain}/ios/YOUR_BUNDLE_IDENTIFIER/callback,
YOUR_BUNDLE_IDENTIFIER://{yourDomain}/ios/YOUR_BUNDLE_IDENTIFIER/callback
macOS
https://{yourDomain}/macos/YOUR_BUNDLE_IDENTIFIER/callback,
YOUR_BUNDLE_IDENTIFIER://{yourDomain}/macos/YOUR_BUNDLE_IDENTIFIER/callback
たとえば、iOSのバンドル識別子がcom.example.MyApp
でAuth0ドメインがexample.us.auth0.com
の場合には、次の値になります:
https://example.us.auth0.com/ios/com.example.MyApp/callback,
com.example.MyApp://example.us.auth0.com/ios/com.example.MyApp/callback
Auth0 Flutter SDKをプロジェクトに追加します:
flutter pub add auth0_flutter
Androidプラットフォームが開発対象でない場合には、この手順をスキップしてください。
SDKにはマニフェストのプレースホルダーが必要です。Auth0は内部でプレースホルダーを使用して、認証のCallback URLを捉えるintent-filter
を定義します。Auth0テナントのドメインとCallback URLスキームを設定する必要があります。
サンプルでは、次のプレースホルダーを使用します:
auth0Domain
:Auth0テナントのドメインです。通常、Auth0 Dashboardにあるアプリケーションの設定の[Domain(ドメイン)]フィールドで確認できます。カスタムドメインを使用している場合には、この値をカスタムドメインの値に設定してください。auth0Scheme
:使用するスキームです。カスタムスキーム、または、Androidアプリリンクを利用したい場合はhttpsになります。この値の設定に関する詳細情報は、Auth0.Android SDK READMEをお読みください。
Android Studio内でSync Project with Gradle Filesを実行し、変更内容を適用します。
iOSまたはmacOSプラットフォームが開発対象でない場合には、この手順をスキップしてください。
チームIDとバンドル識別子を構成する
Auth0アプリケーションの設定ページに移動して最後までスクロールし、 [Advanced Settings(詳細設定)]>[Device Settings(デバイス設定)]を開きます。[iOS]セクションで[Team ID(チームID)]にApple Team IDを、[App ID(アプリID)]にアプリのバンドル識別子を設定します。

これで、アプリがAuth0テナントのapple-app-site-association
ファイルに追加されます。
関連ドメインの機能を追加する
open ios/Runner.xcworkspace
(macOSの場合にはopen macos/Runner.xcworkspace
)を実行し、Xcodeでアプリを開きます。Runnerターゲット設定の[Signing & Capabilities(署名と機能)]タブに移動し、[+ Capability(+機能)]ボタンを押します。それから[Associated Domains(関連ドメイン)]を選択します。

次に、以下のエントリーを[Associated Domains(関連ドメイン)]の下に追加します。
webcredentials:{yourDomain}
カスタムドメインがある場合は、Auth0ドメインの代わりに、設定ページにあるカスタムドメインを使用してください。
アプリに認証をセットアップするには、ユニバーサルログインが最も手軽な方法です。最良のエクスペリエンス、高い安全性、幅広い機能を活用するためにも、ユニバーサルログインの使用をお勧めします。
Auth0
クラスを使用して、Auth0のユニバーサルログインをFlutterアプリに統合します。webAuthentication().login()
を使用して、ユーザーをAuth0のユニバーサルログインページにリダイレクトします。これはFuture
であるため、ユーザートークンの取得を待ち合わせる必要があります。
Android:カスタムスキームを使用している場合には、このスキームをログインメソッドに渡して、SDKが適切にログインページへ誘導してから戻せるようにします:
await auth0.webAuthentication(scheme: 'YOUR CUSTOM SCHEME').login();
ユーザーがログインすると、アプリへリダイレクトされます。その後、このユーザーのIDとアクセストークンにアクセスできるようになります。
checkpoint.header
webAuthentication().login()
を呼び出してアプリにユーザーをログインするボタンをアプリに追加します。認証のためにAuth0へリダイレクトされてから、アプリケーションに戻されることを確認します。
login
を呼び出した結果、トークンにアクセスできることを確認します
ユーザーをログアウトさせるには、Auth0 Flutter SDKのwebAuthentication().logout()
を呼び出してログインセッションをクリアし、ユーザーをAuth0のログアウトエンドポイントにリダイレクトします。Auth0からのログアウトについて詳しい情報をお読みください。
Android:カスタムスキームを使用している場合には、このスキームをログアウトメソッドに渡して、SDKがアプリを適切に戻せるようにします:
await auth0.webAuthentication(scheme: 'YOUR CUSTOM SCHEME').logout();
checkpoint.header
アプリにwebAuthentication().logout()
を呼び出して、ユーザーをアプリからログアウトさせるボタンを追加します。ボタンを選択し、Flutterアプリからログアウトエンドポイントにリダイレクトされ、再び戻されることを確認してください。アプリケーションにはログインされていないはずです。
webAuthentication().login()
を呼び出すと、ユーザープロファイルが自動的にユーザープロファイルプロパティを取得します。ログイン手順から返されたオブジェクトには、すべてのユーザープロファイルプロパティのあるuser
プロパティが含まれ、これらはIDトークンをデコードすることで入力されます。
checkpoint.header
ログインして、結果のuser
プロパティを調査します。email
やname
など、現在のユーザーのプロファイル情報を確認します。
Next Steps
Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.
This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:
- Auth0 Dashboard - Learn how to configure and manage your Auth0 tenant and applications
- auth0-flutter SDK - Explore the SDK used in this tutorial more fully
- Auth0 Marketplace - Discover integrations you can enable to extend Auth0’s functionality
- Configure other identity providers
- Enable multifactor authentication
- Learn about attack protection
- Learn about Actions
Sign up for an or to your existing account to integrate directly with your own tenant.