我有一个类似的问题。stackoverflow 上的几个解决方案主要将此问题归因于缺乏所需的权限。使用Graph API 资源管理器或文档检查您需要的权限(这些表的每个字段都有一个称为权限的列)。一些建议是使用范围特别提及您在登录按钮中或在调用 api 时需要哪些权限。例如:
FB.login(function (response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
} else {
console.log('User cancelled login or did not fully authorize.');
}
}, { scope: 'email,publish_stream,user_birthday,user_location' });
我有一个不同的问题,我仔细检查了为我的应用程序仪表板设置的所有权限是否正确,但是在登录时,我指定了一个具有一组权限的范围,这些权限似乎覆盖了应用程序设置。:( 我觉得这很奇怪,但我也通过在范围中包含其他权限来纠正它,我的问题得到了解决。
查看是否通过代码设置了正确权限的有效方法是使用以下代码:
FB.api({ method: 'fql.query', query: 'SELECT user_status,friends_status,user_photos,friends_photos,user_location,friends_location FROM permissions WHERE uid=me()' }, function(resp) {
for(var key in resp[0]) {
if(resp[0][key] === "1")
console.log(key+' is granted');
else
console.log(key+' is not granted');
}
});
PS:在一篇文章中,我还找到了一个解决方案,该解决方案提到该人在从他的 Facebook 帐户中删除该应用程序并通过再次添加它进行测试后能够获取数据。还要确保如果您更改了应用仪表板中的权限,请在测试之前注销您的应用程序并再次登录。
我浪费了 3 个多小时试图解决这个问题,而 facebook 文档对我没有帮助,所以希望这对某人有所帮助!