Как получить пользовательскую страну с помощью API-интерфейсов facebook?

Я хочу получить зарегистрированную страну пользователя и вставить ее в 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;
}

Спасибо!

Ответ 1

Я считаю, что параметр, который вы ищете, location вместо страны.

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

Чтобы запросить эти данные, вам понадобятся ваши пользователи, чтобы предоставить вам user_location.

Это даст вам значение поля, отправленного пользователем - обратите внимание, что этот параметр может не всегда заполняться, поскольку он зависит от того, действительно ли пользователь отправляет эту информацию - если они не предоставили его - вы не сможете его получить.

Объект будет выглядеть примерно так:

  "location": {
    "id": "112604772085346",
    "name": "Ramat Gan"
  },

Когда у вас есть объект местоположения (который скорее всего будет страницей), вы можете запросить этот объект для извлечения страны:

/112604772085346?fields=location

Это даст вам больше информации, включая страну.

{
  "location": {
    "city": "Ramat Gan",
    "country": "Israel",
    "latitude": 32.0833,
    "longitude": 34.8167,
    "zip": "<<not-applicable>>"
  },
  "id": "112604772085346"
}

Ответ 2

Чтобы завершить то, что Lix сказал:

Вы можете сделать это только с одним вызовом Graph API, вызвав

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

Действительно, объект местоположения под пользовательским объектом представляет собой объект страницы, который имеет Объект местоположения.

Итак, это даст вам что-то вроде этого:

"location": {
  "location": {
    "city": "Ramat Gan",
    "country": "Israel",
    "latitude": 32.0833,
    "longitude": 34.8167,
    "zip": "<<not-applicable>>"
  }
}

Это позволяет избежать двойного вызова Graph API.

Ответ 3

v2.11 запрос:

/me?fields=hometown,location

Разрешение:

user_hometown user_location

результат:

{ "hometown": { "id": "XXXXREDACTED", "name": "Manila, Philippines" }, "location": { "id": "XXXXREDACTED", "name": "Manila, Philippines" }, "id": "XXXXREDACTED" }