是否可以检查Facebook上是否确认了电子邮件?

nib*_*ius 65 security facebook single-sign-on facebook-graph-api facebook-authentication

更新

这是在2013年12月16日通过https://www.facebook.com/whitehat/report/向Facebook报道的,Facebook 于12月17日回复说该错误早已得到修复.

我用我的Facebook帐户重新测试了这个(我还没有验证电子邮件地址),使用Grap API Explorer工具时,无法使用Graph API或使用FQL查询获取此帐户的电子邮件地址.

结论:使用Graph API或FQL查询从Facebook获得的电子邮件地址是经过验证的电子邮件.如果某个帐户尚未验证其电子邮件,则无法获得该帐户.

原帖

我正在制作一个带有SSO的网络应用程序,用户可以通过Google或Facebook登录.我希望拥有这两种类型帐户的用户在我的系统中显示为同一用户,无论他们使用哪种身份登录.为了实现这一点,我正在考虑使用电子邮件地址作为标识符来了解我是否应该创建一个新帐户或者用户是否已经存在.

为了不引入任何安全问题,我必须知道电子邮件地址已经过验证,并且实际上属于用户.对于Google,userinfo API可以告诉我电子邮件是否已经过验证,因此这里没有问题.但我在Facebook Graph API中找不到这样的东西.

是否有可能知道Facebook上是否确认了电子邮件地址?

我知道有一个verified字段,但这只会告诉帐户是否经过验证而不是电子邮件地址.

起初看起来您只能将图谱API用于已确认电子邮件地址的帐户.如果地址未得到确认,我只是在收到错误时告诉我必须先确认电子邮件地址才能登录任何第三方网站.

然而,对于所有帐户而言,这似乎并非如此.在某些情况下,即使您没有确认的电子邮件地址,也可以访问Facebook的所有部分.例如,当您使用@ myopera.com邮件地址注册时.

当您使用@ myopera.com电子邮件地址注册Facebook时,您会收到一条消息,表明您的帐户在提交注册表单后已暂时锁定.要继续,您需要提供您的电话号码以验证您的帐户并"保持Facebook安全且免受垃圾邮件"(对于屏幕截图中的瑞典语,这是在我进入Facebook并将语言更改为英语之前):

报名参加期间的安全检查

当您提供电话号码时,您已登录,Facebook不会再唠叨您必须验证您的电子邮件地址.

您可以在设置页面上看到尚未验证您的电子邮件地址的唯一位置:

Facebook设置视图与未经证实的电子邮件地址

在您验证电子邮件地址之前通常无法访问的移动设置可用,并列出注册期间输入的电话号码:

Facebook移动设置视图与未经证实的电子邮件地址

除此之外,还可以使用未经证实的电子邮件地址登录第三方站点:

使用未经证实的电子邮件地址登录图形API资源管理器

当我使用此用户连接到图形API时,我可以获得未经证实的电子邮件地址,并且该verified字段按预期返回true,因为我已通过添加电话号码验证了帐户.显然我不相信我从Facebook获得的电子邮件地址真的属于拥有Facebook帐户的用户.

有没有其他方法可以知道电子邮件地址是否经过验证,或者如果我想用它来识别用户,我是否必须自己验证?

jan*_*ano 6

我一直在寻找关于这个问题的官方 Facebook 声明,最后我找到了这个:https : //developers.facebook.com/docs/facebook-login/multiple-providers#postfb1,它清楚地表明开发人员不应该依赖这个事实该电子邮件地址已通过验证。

  • 请检查将手动登录信息添加到 Facebook 登录创建的帐户 > 确保 Facebook 登录电子邮件地址已验证,然后重新验证您的评论。 (2认同)

Joh*_*ron 1

我从未使用过它,但您也许可以检查 user.email_hashes 的 FQL 查询:http://developers.facebook.com/docs/reference/fql/user