我正在使用Facebook Javascript SDK v2.5和facebook图形API来访问用户位置数据(更具体地说是街道,邮编和城市),其代码如下:
window.fbAsyncInit = function() {
FB.init({
appId : 'my_app_ID',
xfbml : true,
version : 'v2.5'
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function logIntoFB(){
FB.login(function(){
testAPI();
}, {scope: 'public_profile,email,user_location'});
function testAPI() {
FB.api('/me?fields=name,first_name,last_name,location',function(response) {
console.log(response);
});
}
}
当用户登录并将响应记录到控制台时,它看起来如下所示:
Object {name: "MyFirstName MyLastName", first_name: "MyFirstName", last_name: "MyLastName"
, id: "01010101010101"}
没有位置对象,所以我无法获取location.city等 . 特定facebook帐户的隐私设置未被更改,并且提供了地址,因此信息应该是可检索的 . 我已经检查了Facebook SDK文档和StackOverflow上的各种问题,但似乎没有任何效果 . 其中一些是:“Facebook user location using fb.api " and " Retrieve zip code of a facebook user by facebook graph API”
任何帮助将不胜感激 .
1 回答
首先确保您在登录期间要求此权限(您可以在应用程序的登录对话框中查看权限列表) .
接下来,您可以获取访问令牌并使用access token debugger查看它是否包含
user_location
权限 . 如果缺少此权限,则可能意味着:用户在登录期间拒绝了此权限 .
您的应用尚未获准使用此权限,而您正在使用在您的应用中没有任何角色的用户对此进行测试 . 未批准的权限仅适用于该应用的管理员/开发人员 .