2015-08-17 13 views
12

Ich möchte das angemeldete Benutzerland abrufen und in ein div einfügen. Es ist mir gelungen, es mit dem Benutzernamen, Geschlecht und Altersbereich zu machen, aber manchmal kann ich das Land nicht abrufen. Hier ist mein Code:Wie Benutzerland mit Facebook Grafik API abrufen?

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

Dank!

+0

siehe [link] (http: // Stackoverflow. com/fragen/27379382/abrufen-u ser-country-durch-facebook-android-graph-api) – Esty

Antwort

26

Ich glaube, der Parameter, den Sie suchen, ist location anstelle von Land.

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

Um diese Daten abzufragen, werden Sie Ihre Benutzer müssen Sie den Wert des Benutzers abgegeben Feld user_location permission.

Dies wird Ihnen gewähren - zur Kenntnis nehmen, dass dieser Parameter nicht immer bestückt sein könnte da es darauf ankommt, dass der Benutzer diese Informationen tatsächlich übermittelt - wenn sie diese nicht angegeben haben - können Sie sie nicht abrufen.

Das Objekt wird wie folgt aussehen:

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

Nachdem Sie den Speicherort Objekt haben (was höchstwahrscheinlich eine Seite sein wird), können Sie das Objekt abfragen, das Land abzurufen:

/112604772085346?fields=location 

Dies wird Ihnen mehr Informationen einschließlich des Landes geben.

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

Funktioniert perfekt. Danke für die tolle Erklärung! – Idan

+0

Schauen Sie sich die Antwort von [vchatbot] an (http://Stackoverflow.com/a/32073757/558021), @Idan - sieht so aus, als ob es eine Möglichkeit gibt, dies mit nur einer Anfrage an die API zu tun - viel besser: P – Lix

+0

Es ist möglich, den ISO-Code für das Land in Facebook zu erhalten?https://en.wikipedia.org/wiki/ISO_3166-1 – user1253414

40

zu vervollständigen, was Lix sagte:

Sie es mit nur einem Anruf tun können API Graph von

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

der Tat ist die Lage Objekt unter dem Benutzerobjekt eine Page object, die eine Location object hat.

Also, das wird Ihnen etwas wie folgt aus:

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

Dies vermeidet man eine doppelte Anruf tätigen API grafisch darzustellen.

+1

Wir lernen jeden Tag etwas Neues! Schön! – Lix

+0

'location {location}' ist eine neue Syntax für mich - ich war offensichtlich nicht so oft dabei, diese Änderungen zu beobachten - könntest du bitte ein wenig mehr Erklärungen über die Verwendung geben? – Lix

+0

Es tut mir leid, aber ich verstehe nicht, wie ich weitere Erklärungen über seine Verwendung hinzufügen kann ... Gibt es etwas, das du nicht verstanden hast? – vchabot

0

v2.11 Abfrage:

/me?fields=hometown,location

Erlaubnis:

user_hometown user_location

Ergebnis:

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

Verwandte Themen