ログイン必須のシステムを作るときに、メールアドレス認証回りを外部のプラットフォームに完全に依存して楽をしたい人生だったので、OAuth時に取得できるメールアドレスをそのまま信頼できるユニークなキーとして使用しても問題ないか調べてみた。
- verifyされていない場合は null となる。
- そもそも電話番号認証で登録してない場合は null。
If the user does not have an email address on their account, or if the email address is un-verified, null will be returned.
(引用元: https://dev.twitter.com/rest/reference/get/account/verify_credentials)
- アカウント特定のユニークキーとして使用する場合はアプリ側で担保しなければならない。
- そもそも電話番号認証で登録してない場合は null。
各アカウントを特定するための固有の認証情報としてメールアドレスを使用する場合は、アプリ側でその利用者のFacebookアカウントに関連付けられているメールアドレス(Facebookログイン時に取得したもの)が有効であることを確認する必要があります。
(引用元: https://developers.facebook.com/docs/facebook-login/multiple-providers)
注: emailアクセス許可をリクエストしても、メールアドレスを取得できるとは限りません。たとえば、利用者がメールアドレスの代わりに電話番号を使用してFacebookにサインアップしている場合、メールフィールドは空になっていることがあります。
(引用元: https://developers.facebook.com/docs/facebook-login/permissions#reference-email)
まとめ
Twitter、Facebook ともに OAuth 時に参照できるメールアドレスは、nullの場合もあるし信頼出来ないものなので、実装するシステム側できちんとメールアドレス認証の仕組みを実装しましょう! (楽を出来無い人生だった…)