✉️

Firebase Authenticationの確認済みのメールアドレスとは

2022/12/19に公開

確認済みのメールアドレスによる自動リンク

Firebase Authenticationを使って複数のProvider(Apple, Googleなど)で認証できるようにしている場合、同一のメールアドレスだとFirebase側で自動で同じアカウントとしてリンクしてくれる機能がある。

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

例えば、oinume@gmail.comのGoogleアカウントで認証して、Apple(oinume@gmail.com)のアカウントで認証すると、Firebase上では同じユーザーとなり、GoogleでもAppleでもログインできるようになる。

Firebase

Firebaseのドキュメントを読むと、GoogleなどのIdPが発行したメールアドレスの場合にこの自動リンクの機能が働くと思われる。唯一の例外として、Appleは毎回アカウントを多要素認証(SMS認証のこと?)しているので、リンクの対象になっていると書かれている。

なので、例えばGoogleアカウントでも、oinume@yahoo.co.jpのような他のサービスで発行されたメールアドレスで登録している場合は自動リンクの対象外になる。(未検証)

メールアドレスによるログインの場合

また、メールアドレス+パスワードで作成したFirebaseアカウントも自動リンクの対象になる。ただし、自動リンクされるのは、そのメールアドレスが認証済みの場合のみで、認証済みと未認証の場合で以下のように挙動が異なる

  1. 認証済みの場合:自動リンク
  2. 未認証の場合:リンクされず、最後に認証したProviderでのみログインができる
       1. Email(oinume@gmail.com) + PasswordでFirebaseアカウント作成
       2. メールアドレス認証せずにGoogleアカウント(oinume@gmail.com)で認証
       3. Email+Passwordではログインできなくなる

まとめ

Firebase Authenticationの挙動を把握するのは難しい...

Discussion