はじめに
Flutterを使ってネイティブアプリを試しに作っていて、先日 Firesbase Authentication
を使ったログイン機能を実装してみた。実装のためのサンプルコードは先日の記事に記載しているが、Email/Password認証とGoogle認証を併用する場合の挙動や、Email確認のステータスの変わり方などについて、いくつか気になったことをその後確認してみたので、その時の内容をメモとして残す。
Flutterの実行環境
- Ubuntu 18.04LTS(GCP上)
- Flutter 1.22.6
- Dart 2.10.5
- Android Studio 4.1.2
- VScode 1.53.0
メモ内容
以下に、気になった事とそれに対する確認結果を列挙しているので、よければ参考にしてください。
Email確認やパスワード再設定の本文内容の変更はどの様にやるのか?
⇒ FirebaseコンソールからAuthentication
を選択し、Templates
のタグから各メール本文の内容を編集できる。(下図参照)
Email確認やパスワード再設定のメールを2回以上送った場合は?
⇒ 最新のメール以外からでメール内のリンク先に飛ぼうとすると、リクエスト期限切れとなりEmail確認 or 再設定ができない。
Email確認のステータスが未確認の状態で、Google認証をした場合、Email確認のステータスはどうなるのか?
Google認証でログインしたタイミングで、Email確認のステータス(isEmailVerified
の返り値)はTrue
となる。
Google認証とEmail/Password認証で同じメールドレスを登録できるのか?
Google認証でAのアドレス、Email/Password認証でAのアドレスという登録がそれぞれされている訳ではなく、あくまでも登録された1つのアドレスAに対し、そのユーザーがどの様な認証でログインするのか、という管理がされている。
具体的な挙動は以下の様な感じになる。
【先にGoogle認証でログイン(登録)した場合】
⇒ Email/Password認証によるアカウント登録は既に登録済みのメールアドレスとなってしまい登録できない。ただし、パスワード再設定メールは送ることができ、その再設定したパスワードを使えば、Email/Password認でログインができる。(パスワードの再設定画面はメール内のリンクから飛ぶため、Email確認もされた状態になる。)
Firebaseのコンソール上での状態の変化は下図の様な感じ。
【先にEmail/Password認証のアカウント登録をした場合】
⇒ Email確認が完了していなくてもGoogle認証で入れるが、確認済みかどうかで下図の様に認証状態が変わる。
先にEmail/Password認証のアカウント登録していたとしても、Email確認が済んでいない状態でGoogle認証をしてしまうと、最初に登録したPassword情報が消えてしまう。
そのため、パスワード再設定が必要になる。
気になった部分については、認証の作業とコンソール上での変化を見ながら調べてみたが、実際の利用の話をすると、認証の仕方はいずれかだと思うので基本的には大した問題にはならないはず。。。
あまり役立つ情報ではないかもしれませんが、誰かの参考になれば嬉しいです!
※もし何か追加で調べた事があったら、随時こちらの記事に追記していきたいと思います。