アップデート
これは2013 年 12 月 16 日にhttps://www.facebook.com/whitehat/report/を介して Facebook に報告され、Facebook は 12 月 17 日にバグが修正されて久しいと回答しました。
Facebook アカウントでこれを再テストしました (まだ電子メール アドレスを確認していません) 。Grap API Explorer ツールを使用すると、Graph API または FQL クエリを使用してこのアカウントの電子メール アドレスを取得することはできません。 .
結論: Graph API または FQL クエリを使用して Facebook から取得した電子メール アドレスは、検証済みの電子メールです。アカウントがメールであることを確認していない場合、それを取得することはできません。
元の投稿
ユーザーが Google または Facebook でサインインできるようにする SSO を使用して Web アプリを作成しています。どちらの ID でログインしているかに関係なく、両方のタイプのアカウントを持つユーザーがシステム内で同じユーザーとして表示されるようにしたいと考えています。これを実現するために、新しいアカウントを作成する必要があるか、ユーザーが既に存在するかを知るための識別子として電子メール アドレスを使用することを考えています。
セキュリティ上の問題が発生しないようにするには、電子メール アドレスが検証済みであり、実際にユーザーのものであることを確認する必要があります。Google の場合、 userinfo APIはメールが検証されているかどうかを教えてくれるので、ここでは問題ありません。しかし、 Facebook Graph APIでこのようなものを見つけることができません。
Facebookでメールアドレスが認証されているかどうかを知ることはできますか?
フィールドがあることは知っていverified
ますが、それはアカウントが確認されているかどうかのみを示しており、電子メール アドレスは示していません。
最初は、メールアドレスが確認されたアカウントでのみ Graph API を使用できるように見えました。アドレスが確認されなかった場合、サード パーティのサイトにサインインするには、まずメール アドレスを確認する必要があるというエラーが表示されました。
ただし、これはすべてのアカウントに当てはまるわけではないようです。確認済みのメールアドレスを持っていなくても、Facebook のすべての部分にアクセスできる場合があります。この一例は、 @myopera.comメール アドレスでサインアップする場合です。
@myopera.com のメール アドレスで Facebook にサインアップすると、サインアップ フォームを送信するとすぐに、アカウントが一時的にロックされているというメッセージが表示されます。続行するには、アカウントを確認し、「Facebook をスパムから保護して安全に保つ」ために、電話番号を提供する必要があります (スクリーンショットのスウェーデン語で申し訳ありません。これは、Facebook にアクセスして言語を英語に変更する前のことです)。
電話番号を入力すると、ログインしたことになります。Facebook は、メール アドレスを確認する必要があることについて、これ以上しつこく言いません。
メールアドレスがまだ確認されていないことを確認できる唯一の場所は、設定ページです。
メールアドレスを確認する前に通常はアクセスできないモバイル設定が利用可能で、サインアップ時に入力した電話番号が一覧表示されます。
これに加えて、未確認の電子メール アドレスを使用してサード パーティのサイトにログインすることもできます。
このユーザーでグラフ API に接続すると、未確認のメール アドレスを取得できます。電話番号を追加してアカウントverified
を確認したため、フィールドは期待どおりに true を返します。したがって、Facebook から取得した電子メール アドレスが本当に Facebook アカウントを持っているユーザーのものであるかどうかは、明らかに信頼できません。
メールアドレスが検証されているかどうかを知る他の方法はありますか? ユーザーの識別に使用する場合は、自分で確認する必要がありますか?