web-dev-qa-db-fra.com

Comment récupérer le pays de l'utilisateur à l'aide de l'API graphique de Facebook?

Je souhaite récupérer le pays de l'utilisateur connecté et l'insérer dans un div . Je parviens à le créer avec le nom d'utilisateur, le sexe et la tranche d'âge, mais je ne peux pas récupérer le pays code:

  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;
}

Merci!

16
Idan

Je crois que le paramètre que vous recherchez est location au lieu de pays. 

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

Pour interroger ces données, vos utilisateurs devront vous accorder l’autorisation user_location.

Cela vous donnera la valeur du champ soumis par l'utilisateur - notez que ce paramètre peut ne pas toujours être renseigné, car cela dépend de la soumission de cette information par l'utilisateur. S'ils ne l'ont pas fournie, vous ne pourrez pas le récupérer.

L'objet ressemblera à ceci:

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

Une fois que vous avez l'objet location (qui sera probablement une page), vous pouvez interroger cet objet pour extraire le pays:

/112604772085346?fields=location

Cela vous donnera plus d'informations, y compris le pays.

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

Pour compléter quoi Lix dit:

Vous pouvez le faire en un seul appel à Graph API, en appelant

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

En effet, l'objet de localisation sous l'objet utilisateur est un objet Page , qui a un objet Emplacement .

Donc, cela vous donnera quelque chose comme ça:

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

Cela vous évite de faire un double appel à Graph API.

48
vchabot

Les champs de l'API Fb sont maintenant compatibles

scope="public_profile,user_location"

fields="name,location{location{country, country_code, city, city_id, latitude, longitude, region, region_id, state, street, name}}"
0
Rodrigo Butta

requête v2.11:

/me?fields=hometown,location

autorisation:

user_hometown
user_location

résultat: 

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