如何使用Facebook Graph API检索用户所在国家/地区?

Ida*_*dan 16 facebook-graph-api

我想检索登录的用户所在国家/地区,并将其插入到div中.我成功地使用用户姓名,性别和年龄范围,但有些人为什么我无法检索国家.这是我的代码:

  function testAPI() {
console.log('Welcome!  Fetching your information.... ');
FB.api('/me?fields=name,email,gender,age_range,picture,country', function (response) {
  document.getElementById('status').innerHTML = response.name + ",";
  document.getElementById('status1').innerHTML = response.gender + ",";
  document.getElementById('status2').innerHTML = (response.age_range.min) + "-" + (response.age_range.min + 1) + " years old";
  document.getElementById('status3').innerHTML = response.country;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 50

完成Lix所说的话:

只需调用一次Graph API,即可调用

/me?fields=name,email,gender,age_range,picture,location{location}

实际上,用户对象下的位置对象是一个Page对象,它有一个Location对象.

所以,这会给你这样的东西:

"location": {
  "location": {
    "city": "Ramat Gan",
    "country": "Israel",
    "latitude": 32.0833,
    "longitude": 34.8167,
    "zip": "<<not-applicable>>"
  }
}
Run Code Online (Sandbox Code Playgroud)

这可以避免您对Graph API进行双重调用.

  • 我们每天都在学习新东西!好一个! (3认同)

Lix*_*Lix 30

我相信你要找的参数location不是国家.

/me?fields=name,email,gender,age_range,picture,location
Run Code Online (Sandbox Code Playgroud)

要查询此数据,您需要用户授予您user_location权限.

这将为您提供用户提交字段的值 - 请注意,此参数可能并不总是填充,因为它取决于用户实际提交此信息 - 如果他们没有提供 - 您将无法检索它.

该对象看起来像这样:

  "location": {
    "id": "112604772085346",
    "name": "Ramat Gan"
  },
Run Code Online (Sandbox Code Playgroud)

获得位置对象(很可能是页面)后,您可以查询该对象以检索国家/地区:

/112604772085346?fields=location
Run Code Online (Sandbox Code Playgroud)

这将为您提供更多信息,包括国家.

{
  "location": {
    "city": "Ramat Gan",
    "country": "Israel",
    "latitude": 32.0833,
    "longitude": 34.8167,
    "zip": "<<not-applicable>>"
  },
  "id": "112604772085346"
}
Run Code Online (Sandbox Code Playgroud)