使用Facebook Javascript SDK访问用户位置数据

Access user location data with Facebook Javascript SDK

本文关键字:用户 位置 置数据 访问 SDK Facebook Javascript 使用      更新时间:2023-09-26

我使用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上的各种问题,但似乎什么都不起作用。其中一些是:"使用fb.api的Facebook用户位置"answers"通过facebook图形API检索facebook用户的邮政编码"

如有任何帮助,我们将不胜感激。

首先确保您在登录期间请求此权限(您可以在应用程序的登录对话框中查看权限列表)。

接下来,您可以获取访问令牌,并使用访问令牌调试器查看它是否包含user_location权限。如果此权限丢失,则可能意味着:

  1. 用户在登录过程中拒绝了此权限
  2. 您的应用程序尚未被批准使用此权限,您正在使用在应用程序中没有角色的用户进行测试。未批准的权限仅适用于应用程序的管理员/开发人员