编辑:不复制,因为:
我让permission
一起工作
请不要在没有阅读的情况下标记为重复。
我正在尝试获取用户的电子邮件地址,但我不知道。在图形api资源管理器上,当我点击发送时,电子邮件字段变灰,并显示:
字段为空或访问令牌不允许
,但当我调试令牌时,它已被授予电子邮件权限
我的个人资料有一个电子邮件地址。
更新:我试过https://developers.facebook.com/tools/console/。我的配置文件不返回任何内容,即使在另一台计算机上也是如此。但相同的代码会返回另一个帐户的电子邮件、名称和uid。
代码:
<fb:login-button scope="email">
Grant Permissions to make more examples work
</fb:login-button>
<button onclick="doPost()">Post to Stream</button>
<script>
function userData() {
FB.api('/me?fields=name,email', Log.info.bind('/me callback'));
};
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
userData();
}
});
</script>
是否可以锁定您的电子邮件,使任何人都不能拥有它?即使我允许你这么做?
发布于 2013-10-18 20:50:45
在我的bug报告被标记为重复之后,我阅读了那里的所有帖子和链接,我知道了是什么导致了这个问题以及如何修复。
的问题 Facebook似乎有时会忘记你的主要电子邮件在图形API上是什么(但它仍然在首选项中)。
Solution受影响的用户必须删除电子邮件,保存设置,然后重新添加地址,重新确认,然后将其设为主要地址。这修复了我在沙盒应用程序和其他应用程序上的帐户,这些应用程序的Facebook登录过去不起作用。
发布于 2016-01-25 22:15:13
马库斯的answer把我带到了我面临的真正问题上。
通过使用Facebook Explorer工具进行调试,我能够计算出在成功登录后应该在FB.api()
方法执行set the email scope操作。
FB.login(function(response) {
if (response.status === 'connected'){
FB.api('/me?fields=id,email,name', function(data) {
console.log( data.email ) // it will not be null ;)
})
}, {scope: 'email'});
这在指南中还不是很清楚,我希望它也能对其他人有所帮助。
发布于 2013-12-15 20:36:02
我遇到了同样的问题,我想我找到了原因:如果用户在Facebook中有一封未经确认的电子邮件(即Facebook向他的电子邮件地址发送了一封验证邮件,但他没有回复),即使他给了你电子邮件权限(!),Facebook也不会将该电子邮件传递给你的应用程序。
因此,如果他有用户名(即userName@facebook.com),我就会使用他的Facebook邮箱。
https://stackoverflow.com/questions/16630972
复制相似问题