2011-01-07 2 views
1

Ich arbeite an einer kleinen Android-Anwendung und versuche, Facebook-Unterstützung hinzuzufügen.Facebook API für Android: Wie bekomme ich erweiterte Informationen über die Freunde des Benutzers?

Hauptproblem: Ich kann nur grundlegende Informationen über die Freunde des Benutzers (ID, Name) erhalten. Liste der App-Berechtigungen (offline_access ist hier nur zum Test, wird in Kürze entfernt werden):

String[] sPermissions = { "friends_about_me" 
         , "friends_birthday" 
         , "friends_location" 
         , "friends_website" 
         , "offline_access" }; 
mLoginButton.init(this, mFacebook, sPermissions); 

Nach Anfrage funktioniert gut - gibt eine Liste von ID: Name Paare,

mAsyncRunner.request("me/friends", new SampleRequestListener()); 

aber wenn ich ändern sie es, um mehr Informationen zu erhalten

mAsyncRunner.request("me/friends?fields=id,name,birthday,hometown", new SampleRequestListener()); 

Server gibt Fehler „Eine aktive Zugriffstoken verwendet werden, müssen Informationen über den aktuellen Benutzer abzufragen.“ Ich habe diese Graph-API-Anfragen mit dem Browser getestet - beide funktionieren wie erwartet.

Kleine Bemerkung: I`m Standard-Debug-cetificate mit apllication zu unterzeichnen und es Hash als Facebook-Anwendung Hash nach Facebook Anweisung hinzufügen:

Ihre Anwendung Android-Hash registrieren. Dies wird von Facebook verwendet, um sicherzustellen, dass eine andere App Ihre App nicht darstellen kann, wenn Sie mit der Facebook Android App sprechen.

Generieren Sie den Schlüssel hash:

keytool -exportcert -alias [alias] -keystore [Schlüsselspeicher] | openssl sha1 -binär | openssl base64 Gehen Sie in den Facebook-Entwicklereinstellungen zur Registerkarte Mobile und Geräte.

Geben Sie im Android-Bereich den Schlüssel Hash in das Feld Key Hash ein.

Vielleicht gibt es einen anderen Weg, um Benutzer-Informationen zu erhalten (bday, Standort, Geschlecht und so weiter)?

Antwort

7

Verwenden

mFacebook.request(graphpath, bundle);

Methode, Bundle werden Parameter, die wie dieses

graphpath = "me/friends" 
bundle.putString("fields","birthday"); 

sein und über Request-Methode aufrufen, es wird Ihnen Geburtstage geben, aber Sie haben friends_birthday hinzufügen Genehmigung.

+0

Sie haben meinen Tag :), es funktioniert. Vielen Dank! –

0

Wenn Sie /me/friends in Graph API aufrufen, werden nur die IDs und Namen der Freunde zurückgegeben. Wenn Sie mehr Informationen über Freunde erhalten möchten, können Sie danach /Friend_ID anrufen.

+0

Hallo, vielen Dank für den Vorschlag. Ich habe versucht, "" mich/Freunde/Friend_ID "- APi gibt nur eine Liste aller Freunde (ID: Name). –

+0

Zuerst müssen Sie die IDs erhalten, so dass Sie'/me/friends' aufrufen müssen.Dann können Sie alle Freunde durchlaufen und für jeden Anruf nur '/ Friend_ID' (ohne' me') aufrufen. Hoffe, das hilft – Bartek

+0

@Bartek: Aber es wird lange dauern .. um Informationen über Freunde zu bekommen .. – Surej

0

Überprüfen Sie this beantworten, um zu wissen, wie Sie Facebook-Freundesliste erhalten und wer von diesen Freunden Ihre App installiert haben.

Verwandte Themen