これは、2013年12月16日に https://www.facebook.com/whitehat/report/ を介してFacebookに報告され、12月17日にFacebookはバグが修正されてから長い。
Facebookアカウントでこれを再テストしました(まだメールアドレスを確認していません)。 Grap API Explorerツール を使用する場合、このアカウントのメールアドレスを取得することはできません。グラフAPIまたはFQLクエリの使用。
結論:FacebookからGraph APIまたはFQLクエリを使用して取得したメールアドレスは検証済みのメールです。アカウントが確認されていない場合、まだメールであるため、取得することはできません。
SSOを使用して、GoogleまたはFacebookでサインインすることをユーザーに提供するWebアプリを作成しています。ログインしているIDに関係なく、両方のタイプのアカウントを持っているユーザーがシステム内の同じユーザーとして表示されるようにします。これを実現するために、新しいアカウントを作成する必要があるのか、ユーザーが既に存在するのかを知るための識別子として、電子メールアドレスを使用することを考えています。
セキュリティの問題を引き起こさないために、メールアドレスが検証され、実際にユーザーのものであることを知っておく必要があります。 Googleの場合、 serinfo API はメールが検証されたかどうかを教えてくれるので、ここで問題はありません。しかし、私は Facebook Graph API でこのようなものを見つけることができません。
Facebookでメールアドレスが確認されたかどうかを知ることはできますか?
verified
フィールドがあることは知っていますが、それはアカウントが検証されているかどうかだけを示しており、メールアドレスではありません。
最初は、メールアドレスが確認されたアカウントに対してのみGraph APIを使用できるように見えました。アドレスが確認されなかった場合、サードパーティのサイトにサインインする前に、まずメールアドレスを確認する必要があることを伝えるエラーが表示されました。
ただし、これはすべてのアカウントに当てはまるとは限りません。確認済みのメールアドレスを持っていなくても、Facebookのすべての部分にアクセスできる場合があります。この一例は、 @ myopera.com メールアドレスでサインアップする場合です。
@ myopera.comのメールアドレスでFacebookにサインアップすると、サインアップフォームを送信するとすぐにアカウントが一時的にロックされたというメッセージが表示されます。アカウントを確認するために電話番号を入力し、「Facebookを安全かつスパムから保護する」ために電話番号を入力する必要があります(スクリーンショットでスウェーデン語をごめんなさい。これはFacebookにアクセスして言語を英語に変更する前のことです):
あなたが電話番号を提供すると、あなたはログインしていて、Facebookはあなたがあなたのメールアドレスを確認しなければならないことについてそれ以上あなたを悩ませません。
メールアドレスがまだ確認されていないことを確認できる唯一の場所は、設定ページです。
メールアドレスを確認するまでは通常アクセスできないモバイル設定が利用可能であり、サインアップ時に入力した電話番号がリストされます。
これに加えて、未確認のメールアドレスでサードパーティのサイトにログインすることもできます。
このユーザーでグラフAPIに接続すると、未確認の電子メールアドレスを取得でき、verified
フィールドは、電話番号を追加することで アカウントの検証 を持っているため、期待どおりにtrueを返します。したがって、明らかに、Facebookから取得した電子メールアドレスが、Facebookアカウントを持っているユーザーのものであるとは信じられません。
電子メールアドレスが検証されたかどうかを知る他の方法はありますか、それともユーザーの識別に使用する場合、自分で検証する必要がありますか?
最適な方法ではありませんが、検索を送信して結果を解析するだけで回避策を試すことができます。
http://www.facebook.com/search/results.php?q=<email address here>
また、検索可能な限りユーザーが自分で設定した特定のプライバシー設定の対象となりますが、他の方法の代わりに...
私はこの問題に関する公式のFacebookの声明を探していましたが、最終的にこれを見つけました: https://developers.facebook.com/docs/facebook-login/multiple-providers#postfb1 開発者は、電子メールアドレスが検証されるという事実に依存するべきではありません。
使用したことはありませんが、user.email_hashesのFQLクエリで確認できる場合があります。 http://developers.facebook.com/docs/reference/fql/user