Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook电子邮件字段返回null(即使设置并接受了“;电子邮件”;权限)_Facebook_Facebook Graph Api - Fatal编程技术网

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

Facebook电子邮件字段返回null(即使设置并接受了“;电子邮件”;权限),facebook,facebook-graph-api,Facebook,Facebook Graph Api,对于我们应用程序中的某些用户,电子邮件字段返回NULL,即使该用户已授予该应用程序的电子邮件访问权限。 当我们通过调试器工具检查范围参数和用户令牌的有效性时,一切正常。许可电子邮件已被接受。 但是,当我们向Graph API询问具有有效用户令牌的用户的电子邮件时,它根本不会出现 是否有一种方法可以阻止应用程序收到他的电子邮件,即使他授予了电子邮件权限 谢谢在某些情况下,Facebook可能没有用户的有效电子邮件地址: 电子邮件:包含有效RFC822电子邮件地址的字符串-注意:此 如果用户没有可用

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

是否有一种方法可以阻止应用程序收到他的电子邮件,即使他授予了电子邮件权限


谢谢

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

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


请参见

如果且只有该用户具有与其帐户关联的已确认电子邮件id,则Facebook将向您提供该用户的电子邮件id。如果您的应用程序可以检索某些用户的电子邮件id,则问题可能与开发人员无关。

我也遇到了同样的问题,我想我找到了原因: 如果用户在Facebook中有一封未确认的电子邮件(即Facebook向用户的电子邮件地址发送了一封验证邮件,但他没有回复),Facebook将不会将该电子邮件传递到您的应用程序,即使他授予您电子邮件权限


所以我所做的就是如果用户有用户名(即。userName@facebook.com).

你可以试试这个,它会起作用的 字符串email=user.getProperty(“email”).toString();
字符串safeEmail=user.asMap().get(“email”).toString()

您必须随“身份验证”按钮一起授予电子邮件权限

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

如果用户使用自己的电话号码登录,Facebook不会发送电子邮件。
查看上的评论以了解更多信息。

@ozba解决方案不适用,因为当用户有未确认的电子邮件地址时,facebook现在会显示一条警告消息。所以,如果你有这个问题,更像是用户用电话号码注册的。

一些可能的原因:

  • 帐户上没有电子邮件地址(只有电话号码)
  • 帐户上没有确认的电子邮件地址
  • 用户输入了一个安全检查点,要求他们重新确认自己的电子邮件地址,但他们尚未确认,因此无法访问用户的电子邮件地址

检查:

我也有同样的问题。它在我的本地主机上运行良好,我使用PHPSDK登录facebook,当我提交请求时,它会返回所有字段,如电子邮件、用户名等,但在服务器上不知何故它不工作。它不会返回用户电子邮件。 我在这方面做了大量的研发工作,我有解决这个问题的办法。:)

如果您使用的是PHPSDK,那么它会返回电子邮件、名字等字段。 希望它对你们大家都有用。
谢谢。

您还需要facebook的许可

包括(关于我)对facebook开发设置的权限,也包括在你的应用程序或代码中。

根据:

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


这就解释了为什么有些用户有
null
电子邮件

我已经阅读了以前的回复,但尽管其中一些回复是正确的,比如如果用户没有确认电子邮件,而是有一个手机号码,但很多时候由于忽略如何使用FB api图形请求信息而发生此错误。假设您的登录已成功完成,您现在拥有访问令牌和用户id等,但仍然无法查看电子邮件和您感兴趣的其他字段。确认登录状态为已连接后,继续使用此请求:

FB.api(
  '/me',
  'GET',
  {"fields":"id,name,birthday,email,about,cover"},
  function(response) {
      // Insert your code here
  }
);
取决于您请求的权限,您现在可以根据需要获取更多信息。

您需要了解的所有信息:

(一)

一些可能的原因:

帐户上没有电子邮件地址

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

帐户上没有已验证的电子邮件地址

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

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

  • 您还需要“电子邮件”扩展权限,即使对于拥有 文件中有效、已确认、可访问的电子邮件地址

(二)

注意,即使您请求电子邮件许可,也不能保证 你会得到一个电子邮件地址。例如,如果有人注册了 用电话号码代替电子邮件地址的Facebook 字段可能为空


只需添加更多权限,即可从Facebook对象获取有关用户的任何数据


facebook

我刚刚确认了这个问题。即使在明确要求用户发送电子邮件后,Facebook也不会将此信息提供给您的应用程序,直到用户确认他的电子邮件。谢谢你的回答。我一直在追问这个问题。欢迎大家,只要@Benjamin Naïm能将我的答案标记为正确就好了…:)@GlennMaynard即使如此,Facebook也应该在某个地方记录它,而不是让开发者绞尽脑汁试图弄清楚为什么没有收到电子邮件。但是用户可以根据自己的意愿更改用户名。因此,没有储蓄的意义username@facebook.com如果用户更改电子邮件,这会有所不同。相反,最好使用uid@facebook.com这对于特定的用户来说总是独一无二的。所以我想每个人都忘记了这样一个事实:用户只能在我认为注册时不必使用电子邮件的情况下使用他/她的手机号码注册,而且显然Facebook不会提供手机号码。Facebook个人资料在没有主要电子邮件联系人的情况下仍然有效。谢谢你,这对我很有帮助。对于PHP Sdk,这可能会对某些人有所帮助!确保您的OAuth呼叫使用include
scope:['email']
获得访问令牌。请确保使用尝试您的访问令牌,并确保
$loginUrl = $facebook->getLoginUrl(
  array(
    'req_perms' => 'email'
  )
);
FB.api(
  '/me',
  'GET',
  {"fields":"id,name,birthday,email,about,cover"},
  function(response) {
      // Insert your code here
  }
);