FlutterFlowとFirebaseで簡単！ 認証画面作成のステップバイステップガイド

# はじめに

今回はFlutterFlowとFirebaseを使って認証画面を作成する方法をステップバイステップで説明します。FlutterFlowは、コードを書く必要なく、視覚的に操作できるUIデザインツールです。そのため、初心者でも簡単に認証画面を作成することができます！

# FlutterFlow概要
https://flutterflow.io/

FlutterFlowは、ユーザーが視覚的なインターフェースを使用してモバイルアプリケーションを開発できるドラッグアンドドロップのWebベースのIDE（統合開発環境）です。Flutterフレームワークをベースにしており、主にFlutterアプリのプロトタイピングや開発を迅速かつ簡単に行うことができます。プログラミングの経験が少ないユーザーや、開発時間を短縮したい経験豊富な開発者にも適しています。

# FirebaseとFirebase Authentication概要
https://firebase.google.com/?hl=ja

https://firebase.google.com/docs/auth?hl=ja

Firebaseはアプリ開発を支援するためのGoogleのプラットフォームです。リアルタイムデータベース、認証、アナリティクス、ファイルストレージなど、多様な機能を提供しており、開発者が効率的にアプリケーションを構築し運用を楽にしてくれます。
Firebase Authenticationはその名の通りFirebaseの一部であり、さまざまな認証方法をサポートしています。以下はFirebase Authenticationの主な特徴です。

* 多様な認証オプション: メールアドレスとパスワード、電話番号認証、そしてGoogle、Facebook、Twitter、GitHubなどのソーシャルメディアアカウントを使用したログインが可能です。また、匿名認証もサポートしており、ユーザーがアカウントを作成せずにアプリを試すことができます。
* 統合と拡張性: 他のFirebaseサービスやGoogle Cloud Platformとシームレスに統合されており、アプリの拡張に伴い他の機能と連携しやすい設計になっています。
* カスタム認証システムのサポート: 既存の認証システムと連携するためのカスタム認証トークンを生成する機能も提供しています。これにより、特定の認証要件に合わせた柔軟な認証フローを実装することが可能です。
* セキュリティとコンプライアンス: 業界標準のセキュリティプロトコルを使用しており、ユーザーデータの安全を保つための強固なセキュリティ対策が施されています。
* ユーザー管理: Firebaseのコンソールを通じて、ユーザー情報の管理やアクセス権の調整が簡単にできます。開発者はユーザーのログイン方法、アクティビティ、アクセス権限などを詳細に管理することができます。
* クライアントライブラリとSDK: iOS、Android、Webアプリケーション向けに提供されるSDKを通じて、認証機能をアプリに簡単に組み込むことができます。

# 前提
[FlutterFlow](https://flutterflow.io/)、[Firebase](https://firebase.google.com/?hl=ja)はそれぞれ利用できる状態であることが前提です。

# 今回のやること概要
今回の流れはざっくり以下のような感じです。

* FlutterFlowプロジェクトの作成
* Firebaseプロジェクトの作成
* Firebase Authenticationの認証設定(Firebase Storageの設定も含む)
* FlutterFlowで認証画面を作る

# FlutterFlowで新規プロジェクトを作成する
画面右上の「+ Create New」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/81db2b70-eb76-cdc5-9f7b-7b8aa60ff81f.png)

任意のプロジェクト名を入力して、「Create Blank」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/b1c5357b-e040-2f22-dbb0-4a0720cf3eff.png)

Setup FirebaseをONにして「Next Step」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/8fe6433a-7a88-81ba-cf31-bf80f538d53f.png)

「Create Project」をクリックすることで、Firebaseのプロジェクトをここで追加できます。便利ですね。
（既存のプロジェクトを利用する場合、Enter your Firebase Project ID...に既存のプロジェクトIDを入力してConnectしましょう！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/24de0008-749e-23da-ad78-9c0043678536.png)

Firebaseのプロジェクト名、リージョン選択をしてFirebaseのプロジェクトを作るGoogleアカウントでSign inします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/382fdf39-c3b0-0964-53b2-09b37c37167a.png)

しばらくすると、Firebaseプロジェクトが作られます。

# Firebaseで認証設定
次にFirebaseで認証設定をするため、「Enable Auth On Firebase」をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/6470af02-2806-692b-3f54-5df5ae279c8f.png)

「始める」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/cd863ffa-4bc8-27e0-e0d4-33411adfd0e9.png)

Firebaseは色々と認証機能を提供してくれていますが、今回はシンプルにメアドとパスワード、Googleでの会員登録とログインの実装にします。

## メール/パスワードの認証を設定
まずは「メール/パスワード」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/de92d95e-cea9-c31e-2ba0-dd2488275f5d.png)

有効にして「保存」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/88c7a53b-5ce1-2915-0abf-cdbe48364811.png)

これでメアドとパスワードの設定は完了したので、Googleも追加しましょう。

## Googleの認証を設定
「新しいプロバイダを追加」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/b8467dad-dfd0-5a65-9da5-8a671d72f791.png)

「Google」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/4ef25377-3787-1af0-e7c9-b3743f2f6605.png)

Googleを有効にして、プロジェクトの公開名、サポートメールを設定して、「保存」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/df762092-86a1-36af-11fb-bad999621135.png)

## Firebase Storageの設定
次にFirebase Storageの設定です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/8dc266ba-7b1b-b1d7-12c8-38f5c382ee6e.png)

「始める」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/4ca69ec0-5806-02d3-32fd-e969613c5836.png)

今回はFlutter Flowでお試しするだけなので、「テストモードで開始する」を選択して「次へ」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/27902f26-6c98-3beb-3612-5c10526b2a0d.png)

「完了」をクリック。
以上でStorageの設定は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/b87609cb-d66b-dd92-d0cf-471e44411db9.png)

# 認証画面を作る

いよいよFlutter Flowでの作業です！
まずは「Start Building」をクリックしてプロジェクトセットアップを完了しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/e9432e30-1d6e-cea4-ef92-0a5571dc732d.png)

いよいよそれっぽい画面が表示されます！
いきなり警告やエラーのような表示があり、色々気になるボタンはありますが、一旦我慢して画面を作りましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/c7b2f5fa-a90d-db04-e384-9bd98845425a.png)

画面左側のサイドメニューの右上のアイコンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/a39bf4df-6b36-1a44-a54d-c00e50dcc2b9.png)

プロジェクトエクスプローラーみたいな表示になった後、画面左側のサイドメニューの右上のアイコンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/3305edbb-25ad-61b4-3c15-1522bf49521e.png)

色々な画面テンプレートが用意されていてすごいですねー。
一旦適当にAuth2を選んでみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/1a5e866c-df5c-728f-4dfe-fdc015476647.png)

「Default Theme」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/03103eae-7100-7c0b-3a67-051c76b4adab.png)

今回はお試しなのでデフォルトのページ名のままで「Create Page」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/fe0755ad-2534-2472-28fc-4294441177e9.png)

これで画面ができてしまいました。めちゃくちゃ早いですね！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/84fc5120-1605-8d36-2076-8511e0bc48c9.png)

今回Appleは対応してないので、ボタンを消しましょう。
Continue with AppleをクリックしてDeleteキーで消します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/1e02f5ea-ad8a-e5f9-b088-20ab756f6980.png)

Log In側も同様にAppleを消します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/ff2289f5-80f4-08b0-ec02-6241b94a567e.png)

# メール/パスワードの認証処理の設定
認証処理の実装ではなく、設定。というのがいいですね。

画面左側のアイコンをクリック、「Authentication」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/670ced89-41ef-9fe9-d164-386c612d7061.png)

警告が出ているので、クリックしてFirebase設定を終わらせます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/4dcc79de-a912-0b2e-d9f1-a22154c1e6c5.png)

「Auto Generate Config Files」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/8874c81b-aaab-fc94-0038-355878016389.png)


「Generate Files」をクリックして完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/0d4143e2-5df5-ef36-7849-9b2f02ad840b.png)

次にStorageの「Deploy」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/f9057f04-a185-06ee-c831-3d1da8f3785f.png)

画面左側のFirestoreアイコンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/02c1c5e1-7579-d7a4-6532-21ee3996a36e.png)

今回はお試しなので、Deleteのところに対して警告が出ているところだけ対応しちゃいます。Deleteのところを「No One」に変更。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/4f3972d5-7a25-7b4c-245a-449407a36d8b.png)

Firestore Rulesの「Deploy」をクリックしてFirestoreの設定が完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/49af4809-5326-e60e-b9ff-6a851e62d490.png)

では、Authenticationに戻って、Entry PageとLogged In Pageを設定します。
Entry Pageに追加したAuth2を、ログイン後の画面としてHomePageを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/13a40301-0c95-766f-817a-43c6e10940eb.png)

# 認証後の画面をちょっとだけ修正
認証後の画面に認証されたということが分かるように何かしらの認証後の情報を表示して、ログアウトボタンもつけておきましょう。
まずはデフォルトで用意された画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/b6be7cb2-a8d5-ded0-fd2d-41ea888c92b9.png)

次にWidgetパレットをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/dc5dbda4-9001-02bd-907f-3e4367118e89.png)

テキストを画面の適当なところにD&Dします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/80c11ddb-0879-89a9-9d7e-574f8c622860.png)

ちょっと細かいところですが、画面右側のTextの設定のスクショの赤枠のところをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/e3a1c6f9-024f-1889-b90d-e9ac9ec75dd3.png)

表示されたポップアップメニューの中の「Authenticated User」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/0453ded5-6da7-486a-bbe6-46477aea7f86.png)

今回はDisplay Nameを表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/0f41ac84-e123-f45a-da82-ff60da521134.png)

次にログアウトボタンを追加します。
画面左側のWidgetからButtonを画面の適当なところへ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/bcf3f29e-24a8-0f92-3208-b1945bf66359.png)

ボタンのテキストをログアウトにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/d05d9000-c7f6-76d2-807c-46155918989a.png)

次にボタンのアクションを設定します。
スクショの順番でまずはログアウトアクションを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/f5f63ab1-c643-903d-e7e0-01d75fd86de9.png)

さらにログアウト後に認証前の画面に戻すために追加のアクションを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/9222e4ca-2c5d-7723-4ec4-68ce1ce7b8dd.png)

まずは画面右側のNavigate AutomaticallyをOFFにしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/f19e552e-7d21-6811-e906-f3e6433089d6.png)

画面中央に戻り、「＋」をクリックして「Add Action」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/c200b3b7-0e3d-ce8a-b105-7de457b55a5b.png)

Navigate Toの中の「Auth2」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/2e4ea359-1376-b786-a6ac-c558f5070fb5.png)

認証後の画面には戻したくないので、Allow Back NavigationはOFFにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/8a5e1a78-5ba4-6bef-0a23-db3651d106f2.png)

# アプリを動かす
けっこう長くなってしまいましたが、慣れるとかなりさくっと作れると思います！
画面右上のアイコンをクリックしてアプリを実行しましょう！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/9a64f8fb-08a2-2fd9-2dfb-53c789010e09.png)

しばらく待つと以下のような画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/9c0de441-c051-b343-3f86-d3aae4ea3d3f.png)

メアドとパスワードで会員登録をするとFirebaseにも反映されるはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774057/6a805e6c-1875-594f-5464-e3074ab9bffd.png)


# まとめ
FlutterFlowを使って認証画面を作成する方法を説明しました。FlutterFlowを使うことで、コードを全く書かずに、簡単に認証画面を作成することができます。業務で使えるのか？というところは一旦おいておくとして、とりあえずなんかサクッと動くもの見たいんだよね。という時にはかなりいい感じだと思います。ぜひお試しを！

# 参考ドキュメント

https://docs.flutterflow.io/data-and-backend/firebase/authentication