71

更新

这是在 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 制作一个 Web 应用程序,为用户提供使用 Google 或 Facebook 登录的功能。我希望拥有两种类型帐户的用户在我的系统中显示为同一用户,无论他们使用哪个身份登录。为了实现这一点,我正在考虑使用电子邮件地址作为标识符来了解我是否应该创建一个新帐户或者用户是否已经存在。

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

是否可以知道电子邮件地址是否在 Facebook 上得到确认?

我知道有一个verified字段,但它只说明帐户是否经过验证,而不是电子邮件地址。

起初,您似乎只能将 Graph API 用于已确认电子邮件地址的帐户。如果地址未被确认,我只是收到一个错误,告诉我必须先确认电子邮件地址,然后才能登录任何第三方网站。

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

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

注册时的安全检查

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

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

带有未确认电子邮件地址的 Facebook 设置视图

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

带有未确认电子邮件地址的 Facebook 移动设置视图

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

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

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

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

4

2 回答 2

7

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

于 2019-05-09T09:10:30.483 回答
1

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

于 2013-05-17T05:56:09.500 回答