Facebook电子邮件字段返回空(即使“电子邮件”权限被设置和接受)

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

有没有一种方法可以防止应用程序收到他的电子邮件,即使他授予了电子邮件许可?

谢谢

我有同样的问题,我想我find了原因:如果用户有一个未经确认的电子邮件在Facebook(即Facebook发给他一个validation邮件到用户的电子邮件地址,但他没有回应)Facebook不会通过该电子邮件到您的即使他给你的电子邮件的权限。

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

我有同样的问题。 它在我的本地主机上正常工作,我使用PHP SDK的Facebooklogin,当我提交我的请求,它是返回所有的字段,如电子邮件,用户名称等,但在服务器上它不工作。它不会返回用户的电子邮件。 我已经做了大量的研发,我有问题的解决scheme。 🙂

$profile = $facebook->api('/me?fields=email,first_name,last_name'); 

如果你正在使用php-sdk只是传递这样的字段,它会返回电子邮件,名字等希望它适用于你所有。 谢谢。

如果用户使用电话号码login,Facebook不会发送电子邮件。 查看https://github.com/mkdynamic/omniauth-facebook/issues/61上的评论以获取更多信息。;

在某些情况下,Facebook可能没有用户的有效电子邮件地址:

电子邮件:包含有效的RFC822电子邮件地址的string – 注意:如果用户没有电子邮件地址,则该字段可能为空

请参阅https://developers.facebook.com/docs/reference/api/user/

您必须提供电子邮件许可以及授权button。

 authButton.setReadPermissions(Arrays.asList("email")); 

Facebook将为您提供用户的电子邮件ID,并且只有该用户具有与其帐户关联的已确认的电子邮件ID。 如果您的应用程序可以检索某些用户的电子邮件ID,则问题可能不在开发者手中。

@ozba解决scheme不适用,因为当用户有一个未经确认的电子邮件地址时,Facebook现在显示一条警告消息。 所以,如果你遇到这个问题,那么用户使用电话号码注册就更好了。 尝试访问电子邮件时出现消息

一些可能的原因:

  • 没有账户的电子邮件地址(只有电话号码)
  • 没有确认的帐户电子邮件地址
  • 用户进入了一个安全检查点,要求他们重新确认他们的电子邮件地址,他们还没有这样做,所以用户的电子邮件地址是无法访问的。

检查: https : //developers.facebook.com/bugs/298946933534016

根据文件 :

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

这将解释为什么一些用户有一个null电子邮件!

所有你必须知道的:

1) 链接1

一些可能的原因:

帐户没有电子邮件地址

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

账户没有经过validation的电子邮件

用户进入了一个安全检查点,要求他们重新确认他们的电子邮件地址,但他们还没有这样做

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

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

2) 链接2

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

你可以试试这个,它会工作String email = user.getProperty(“email”)。toString(); stringsafeEmail = user.asMap()。get(“email”)。toString();

您需要从Facebook获得更多的许可。

包括(about_me)许可到Facebook开发设置,也在您的应用程序或代码..

我已经阅读过以前的回复,但是虽然其中一些是真实的,如果用户没有确认电子邮件,但手机号码,很多时候会发生这种错误,因为忽略了如何使用FB api图来请求信息。 假设您的login已成功完成,并且您现在有一个访问令牌和用户标识,但仍然无法查看您感兴趣的电子邮件和其他字段。确认login状态为已连接后,请使用此请求继续:

 FB.api( '/me', 'GET', {"fields":"id,name,birthday,email,about,cover"}, function(response) { // Insert your code here } ); 

取决于您现在要求您的权限,现在可以根据您的需求来获取更多信息。

 $loginUrl = $facebook->getLoginUrl( array( 'req_perms' => 'email' ) );