Facebook电子邮件字段返回null(即使设置并接受了“;电子邮件”;权限)
对于我们应用程序中的某些用户,电子邮件字段返回NULL,即使该用户已授予该应用程序的电子邮件访问权限。 当我们通过调试器工具检查范围参数和用户令牌的有效性时,一切正常。许可电子邮件已被接受。 但是,当我们向Graph API询问具有有效用户令牌的用户的电子邮件时,它根本不会出现 是否有一种方法可以阻止应用程序收到他的电子邮件,即使他授予了电子邮件权限Facebook电子邮件字段返回null(即使设置并接受了“;电子邮件”;权限),facebook,facebook-graph-api,Facebook,Facebook Graph Api,对于我们应用程序中的某些用户,电子邮件字段返回NULL,即使该用户已授予该应用程序的电子邮件访问权限。 当我们通过调试器工具检查范围参数和用户令牌的有效性时,一切正常。许可电子邮件已被接受。 但是,当我们向Graph API询问具有有效用户令牌的用户的电子邮件时,它根本不会出现 是否有一种方法可以阻止应用程序收到他的电子邮件,即使他授予了电子邮件权限 谢谢在某些情况下,Facebook可能没有用户的有效电子邮件地址: 电子邮件:包含有效RFC822电子邮件地址的字符串-注意:此 如果用户没有可用
谢谢在某些情况下,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也不会将此信息提供给您的应用程序,直到用户确认他的电子邮件。谢谢你的回答。我一直在追问这个问题。欢迎大家,只要@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
}
);