Facebook电子邮件字段返回null(即使设置并接受"电子邮件"权限)

Ben*_*aïm 50 facebook facebook-graph-api

对于我们应用程序中的某些用户,即使用户已授予对应用程序的电子邮件访问权限,电子邮件字段也会返回NULL.通过Debugger工具检查范围参数和用户令牌的有效性时,一切正常.许可电子邮件已被接受.但是当我们向Graph API询问具有有效用户令牌的用户的电子邮件时,它根本不会出现.

有没有办法阻止应用程序收到他的电子邮件,即使他授予了电子邮件权限?

谢谢

ozb*_*zba 94

我有同样的问题,我想我找到了原因:如果用户在Facebook上有未经证实的电子邮件(即Facebook向他发送了验证邮件到用户的电子邮件地址,但他没有回复)Facebook将不会将该电子邮件传递给您应用即使他给了你电子邮件权限.

所以我做的是使用他或她的Facebook电子邮件,如果用户有一个用户名(即userName@facebook.com).

  • @GlennMaynard即便如此,Facebook应该将它记录在某个地方而不是让开发人员试图弄清楚为什么没有收到电子邮件. (17认同)
  • 我刚刚确认了这个问题.即使在明确要求用户电子邮件之后,Facebook也不会在用户确认其电子邮件之前将此信息提供给您的应用程序.谢谢您的回答.我正在追逐这一段很长一段时间. (7认同)
  • 但是用户可以根据需要更改用户名.因此,没有必要保存username@facebook.com,如果用户更改了电子邮件,则会有所不同.相反,最好使用uid@facebook.com,它对于特定用户来说始终是唯一的. (5认同)
  • 所以我想每个人都忘记了这样一个事实,即用户只能使用他/她的手机号码进行注册,我相信电子邮件不是强制注册的,而且显然 Facebook 不会提供手机号码。Facebook 个人资料在没有主要电子邮件联系人的情况下仍然有效。 (3认同)

小智 9

我有同样的问题.它在我的本地主机上运行正常,我使用php SDK进行facebook登录,当我提交请求时,它返回用户的电子邮件,名称等所有字段,但在服务器上以某种方式它不起作用.它不会返回用户邮箱.我已经做了很多研发,我有解决方案.:)

$profile = $facebook->api('/me?fields=email,first_name,last_name');
Run Code Online (Sandbox Code Playgroud)

如果您使用php-sdk只是传递这样的字段,它会返回电子邮件,first_name等.希望它对您有用.谢谢.


use*_*170 7

如果用户使用他们的电话号码登录,则Facebook不会发送电子邮件.有关详细信息,查看https://github.com/mkdynamic/omniauth-facebook/issues/61上的注释.


gbk*_*gbk 5

所有你必须知道的:

1)链接1

一些可能的原因:

帐户中没有电子邮件地址

帐户中没有确认的电子邮件地址

帐户中没有经过验证的电子邮件地址

用户输入了一个安全检查点,要求他们重新确认其电子邮件地址,但尚未这样做。

  • 用户的电子邮件地址无法访问

  • 您还需要“电子邮件”扩展许可权,即使对于具有有效,已确认且可访问的电子邮件地址的用户也是如此。

2)链接2

请注意,即使您请求电子邮件许可,也不能保证您将获得一个电子邮件地址。例如,如果某人使用电话号码而不是电子邮件地址注册了Facebook,则电子邮件字段可能为空。