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