是否有可能检查电子邮件是否在Facebook上确认?

更新

这是2013年12月16日通过https://www.facebook.com/whitehat/report/报告给Facebook的,Facebook在12月17日回复说这个bug早已修复

我用我的Facebook帐户(我还没有validation电子邮件地址)对此进行了重新testing,在使用Grap API Explorer工具时 ,无法使用Graph API或使用FQL查询获取此帐户的电子邮件地址。

结论:您使用Graph API或FQL查询从Facebook获得的电子邮件地址是经过validation的电子邮件地址。 如果一个帐户还没有validation它的电子邮件,但不可能得到它。

原始post

我正在制作一个网站应用程序,提供用户使用Google或Facebooklogin的SSO。 我希望拥有这两种帐户的用户在系统中显示为相同的用户,而不pipe他们使用何种身份login。 为了达到这个目的,我正在考虑使用电子邮件地址作为标识符,以便知道我是否应该创build一个新帐户或用户是否已经存在。

为了不引入任何安全问题,我必须知道电子邮件地址已被validation,并且实际上属于用户。 对于Google来说, userinfo API可以告诉我一个电子邮件是否被validation,所以这里没有问题。 但是我在Facebook Graph API中找不到这样的东西。

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

我知道有一个verified字段,但是只会告知帐户是否已validation,而不是电子邮件地址。

起初,它看起来像只能使用graphicsAPI的电子邮件地址已被确认的帐户。 如果地址没有被确认,我只是得到一个错误告诉我,我必须先确认电子邮件地址,才能login到任何第三方网站。

但是,这似乎并不是所有的帐户。 在某些情况下,即使您没有确认的电子邮件地址,也可以访问Facebook的所有部分。 其中一个例子就是当您使用@ myopera.com邮箱地址注册时。

当您使用@ myopera.com电子邮件地址注册Facebook时,只要您提交registry单,您的帐户就会被暂时locking。 为了继续,您需要提供您的电话号码来validation您的帐户,并“保持Facebook安全,免遭垃圾邮件”(对于截图中的瑞典语抱歉,这是在我可以进入Facebook并将语言更改为英语之前):

安全检查在注册过程中

当你提供你的电话号码时,你已经login了,Facebook不再唠叨任何关于你必须validation你的电子邮件地址的信息。

您只能看到您的电子邮件地址尚未validation的地方位于设置页面上:

Facebook设置查看与未经确认的电子邮件地址

在validation您的电子邮件地址之前,通常无法访问的移动设置可用,并列出注册时input的电话号码:

Facebook移动设置查看与未经确认的电子邮件地址

除此之外,还可以使用未经确认的电子邮件地址login第三方网站:

使用未经确认的电子邮件地址登录API图形浏览器

当我连接到这个用户的graphicsAPI,我可以得到未经确认的电子邮件地址和已verified字段返回真如预期,因为我已经通过添加一个电话号码validation帐户 。 所以显然我不能相信我从Facebook获得的电子邮件地址确实属于拥有Facebook账户的用户。

有没有其他的方式知道电子邮件地址是否被validation,或者我是否必须自己validation,如果我想用它来识别用户?

虽然不是最理想的方法,但您可以通过发送search和parsing结果来尝试解决方法:

 http://www.facebook.com/search/results.php?q=<email address here> 

您也可以根据用户自己设置的任何特定隐私设置进行search,但不能代替其他方式。

我从来没有使用过,但是您可以使用user.email_hashes的FQL查询来检查: http : //developers.facebook.com/docs/reference/fql/user