对于我们应用程序中的某些用户,即使用户已授予对应用程序的电子邮件访问权限,电子邮件字段也会返回NULL。 通过Debugger工具检查范围参数和用户令牌的有效性时,一切正常。许可电子邮件已被接受。 但是当我们向Graph API询问具有有效用户令牌的用户的电子邮件时,它根本不会出现。
即使用户授予了电子邮件权限,用户还是可以阻止应用收到他的电子邮件吗?
由于
答案 0 :(得分:92)
我有同样的问题,我想我发现了原因: 如果用户在Facebook上有未经证实的电子邮件(即Facebook向用户的电子邮件地址发送了验证邮件,但他没有回复),即使Facebook向您提供了电子邮件权限,也不会将该电子邮件传递给您的应用。
所以我所做的就是使用他或她的Facebook电子邮件,如果用户有一个用户名(即userName@facebook.com)。
答案 1 :(得分:9)
我有同样的问题。它在我的本地主机上运行正常,我使用php SDK进行facebook登录,当我提交请求时,它返回所有字段,如用户的电子邮件,名称等,但在服务器上以某种方式它不起作用。它不会返回用户的电子邮件。 我已经做了很多研发,我有解决问题的方法。 :)
$profile = $facebook->api('/me?fields=email,first_name,last_name');
如果你使用php-sdk只是传递这样的字段,它会返回电子邮件,first_name等。 希望它适合所有人。 感谢。
答案 2 :(得分:7)
如果用户使用他们的电话号码登录,则Facebook不会发送电子邮件。 查看有关https://github.com/mkdynamic/omniauth-facebook/issues/61的评论以获取更多信息。
答案 3 :(得分:5)
您需要知道的所有内容:
1)Link 1
一些可能的原因:
帐户没有电子邮件地址
帐户中未确认电子邮件地址
帐户中没有经过验证的电子邮件地址
用户输入了一个安全检查点,要求他们重新确认他们的电子邮件地址,但他们尚未这样做
用户的电子邮件地址无法访问
您还需要“电子邮件”扩展权限,即使对于拥有该权限的用户也是如此 已存档的有效,已确认,可访问的电子邮件地址。
2)Link 2
请注意,即使您申请电子邮件权限,也不能保证 你会得到一个电子邮件地址。例如,如果有人注册了 Facebook上有电话号码而不是电子邮件地址,电子邮件 字段可能是空的。
答案 4 :(得分:3)
您必须提供电子邮件权限以及身份验证按钮。
authButton.setReadPermissions(Arrays.asList("email"));
答案 5 :(得分:2)
在某些情况下,Facebook可能没有用户的有效电子邮件地址:
email:包含有效RFC822电子邮件地址的字符串 - 注意:这个 如果没有可供该用户使用的电子邮件地址,则该字段可能为null
答案 6 :(得分:1)
Facebook将为您提供用户的电子邮件ID,当且该用户的确认电子邮件ID与其帐户相关联。如果您的应用可以检索某些用户的电子邮件ID,则开发人员可能无法解决问题。
答案 7 :(得分:1)
@ozba解决方案不适用,因为当用户拥有未经证实的电子邮件地址时,Facebook现在会显示警告消息。所以,如果你遇到这个问题,那就更喜欢用户使用电话号码注册了。
一些可能的原因:
答案 8 :(得分:1)
请注意,即使您申请电子邮件权限,也不能保证您会收到电子邮件地址。例如,如果有人使用电话号码而不是电子邮件地址注册Facebook,则电子邮件字段可能为空。
这可以解释为什么有些用户会收到null
电子邮件!
答案 9 :(得分:1)
我已经阅读了之前的回复,但是有些回复,如果用户没有确认电子邮件但是手机号码,很多时候会发生错误,忽略如何使用FB api图表请求信息。假设您的登录成功完成,您现在拥有访问令牌和用户ID,但仍然无法看到您感兴趣的电子邮件和其他字段。确认登录状态为已连接后继续使用此请求:
FB.api(
'/me',
'GET',
{"fields":"id,name,birthday,email,about,cover"},
function(response) {
// Insert your code here
}
);
取决于您所要求的权限,您现在可以根据自己的需要获取更多信息。
答案 10 :(得分:0)
你可以尝试一下它会起作用 String email = user.getProperty(" email")。toString(); String safeEmail = user.asMap()。get(" email")。toString();
答案 11 :(得分:0)
您还需要获得Facebook的一项许可。
包括(about_me)对facebook开发设置以及您的应用或代码的许可..
答案 12 :(得分:0)
您只需向想要从Facebook对象中获取有关用户的任何数据添加更多权限
facebook api
答案 13 :(得分:-1)
$loginUrl = $facebook->getLoginUrl(
array(
'req_perms' => 'email'
)
);