注册Facebook有时不提供电子邮件

时间:2012-02-19 05:54:05

标签: facebook

我正在使用注册Facebook作为登录我的网络应用程序的方式之一,并明确要求“电子邮件”权限..

登录时,一些用户数据($facebook->api('/me'))存储在用户数据库中,但有时电子邮件字段不存在 - 这是一个常见问题吗?

7 个答案:

答案 0 :(得分:31)

只是一个猜测......

facebook文档说:

  

注意:如果用户没有有效的电子邮件地址,则不会返回此字段

来源:https://developers.facebook.com/docs/reference/api/user/

因此,当电子邮件地址无效时(例如,多年未使用过facebook并且已经销毁/更改了电子邮件地址的用户),Facebook可能会停止返回此字段。

5%的无效地址可能听起来很大,但如果我查看我的Facebook好友,我认为超过5%的人从不使用他们的帐户,如果他们登录时使用的地址是我不会感到惊讶现在无效。

答案 1 :(得分:4)

用户并不总是需要提供电子邮件地址才能使用Facebook。他们也可以通过短信注册,但它不常见。

简而言之,FB并不总是有电子邮件地址,因此无法将其提供给您的应用。

答案 2 :(得分:2)

<强>尝试:

// Just to make sure email are permitted
//$facebook->getLoginUrl(array('req_perms' => 'email'))

// Request email
FB.api('/me?scope=email', function(response) { /*...*/ });

或者:

$email = $facebook->api('user_id?fields=email');

<强>问题:

  • 用户将其电子邮件地址的可见性更改为“仅限我”,因此您无法获取它。
  • 用户使用短信而非电子邮件注册,如上一个答案所述。

<强> ALTERNATIVE:

如果您绝对需要联系该用户,但无法获得其电子邮件地址,您仍然可以获得其Facebook电子邮件(每个人都有此电子邮件):“user_name@facebook.com”。

如果用户使用POP服务器,他将直接在GMail或其他人收到电子邮件,否则他将收到您的电子邮件作为私人消息。唯一的缺点是,这种方法是您的电子邮件必须是“普通/文本”而不​​是“HTML”。

答案 3 :(得分:1)

有一件事是Users don't always have to provide an email address in order to use Facebook(could have registered through mobile) - 如Colm所说。除此之外 -

如果用户确实已授予您email延期许可权或未随后被撤销,请检查该用户。要对此进行检查,您可以使用权限api -

/USER/permissions

答案 4 :(得分:0)

我有类似的问题&amp;我找到了原因。对于未在“常规帐户”设置选项卡下设置主电子邮件地址(他们有许多电子邮件地址,但他们没有指出哪个是主电子邮件地址)的用户,会出现此问题。

我尝试在各种知名网站上使用此类帐户,这些网站都有Facebook登录&amp;即使他们无法从这些帐户中检索电子邮件地址。

所以,它不是代码的问题(假设你已经要求权限)。我们只需要处理这样的场景&amp;让用户知道我们没有收到他们的电子邮件地址。像Klout一样。

由于

答案 5 :(得分:0)

除了@Jigar Jain上面写的内容之外,用户实际上可以在签名流入期间取消选中电子邮件权限。如果是这样的话,他/她的电子邮件地址将不会被Facebook退回。

如果用户取消选中电子邮件权限,您可以实施一个使登录失败的逻辑,强制您的用户选择另一种保证返回用户电子邮件地址的登录方法。

答案 6 :(得分:0)

使用Facebook注册时,提供电子邮件地址不是强制性的。另一种方法是要求用户在Facebook帐户设置中链接其电子邮件ID。这样,如果这是数据库中的必填字段,则可以获取电子邮件ID。否则,您可以继续使用FB提供的唯一ID。

相关问题