it-swarm.com.de

Facebook 'Friends.getAppUsers' mit Graph API

Ich habe eine Anwendung, die den alten REST API-Aufruf Friends.getAppUsers Verwendet, um die Liste der Freunde für den aktuellen Benutzer abzurufen, der meine Anwendung autorisiert hat.

Ich habe die Dokumentation gelesen, wie mache ich das mit der Graph API? Was wäre ein Beispiel dafür?

87
Richard

Ich habe zu diesem Thema eine Menge Nachforschungen angestellt. Soweit ich weiß, gibt es keine Möglichkeit, Friends.getAppUsers mit Graph API. Die neuesten SDKs von Facebook verwenden alle die alte REST API, um Freunde für die Anwendung zu gewinnen.

5
Richard

Ich habe eine Weile gesucht und auch gedacht, dass dies mit der Graph API nicht möglich ist.

Ich habe jedoch eine ähnliche Frage gestellt: Ersatz für alten GetAppUsers-Aufruf, um die Freunde eines Benutzers zu sehen, die meine Anwendung verwenden?, z Die spezifische API, die ich verwendete, wurde allgemein beantwortet.

https://graph.facebook.com/me/friends?fields=installed

oder allgemeiner

https://graph.facebook.com/{user id}/friends?fields=installed

Dies gibt alle Freunde zurück, mit dem zusätzlichen Feld "built = true" für die Freunde, die die Anwendung verwenden.

Hier funktioniert es im Graph API Explorer :

119
Alex

Dies kann mit FQL erfolgen.

SELECT uid FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?)
AND is_app_user = 1

QED!

27
loungerdork

Ja, die Graph API ist schrecklich dokumentiert. Ich sehe keine Dokumentation für eine "Anwendung" Typ , aber sie verweisen auf die Informationen einer Anwendung in den Dokumenten:

https://graph.facebook.com/2439131959

Vielleicht können Sie die Mitglieder der Anwendung mithilfe der Gruppensyntax abrufen?

https://graph.facebook.com/2439131959/members

Zum Testen benötigen Sie eine authentifizierte Sitzung. Ansonsten sieht es so aus, als ob Facebook uns dazu drängt, FQL zu verwenden, um Anfragen direkt zu senden:

http://developers.facebook.com/docs/reference/fql/application

Sie können FQL-Abfragen ausführen, indem Sie https://api.facebook.com/method/fql.query?query=QUERY abrufen. Sie können ein Antwortformat als XML oder JSON mit dem Parameter format query angeben.

Sie können also eine FQL-Abfrage übergeben, um Informationen zu Ihrer Anwendung abzurufen.

8
typeoneerror

Alte REST API:

$facebook->api_client->friends_getAppUsers();

Neue Graph API:

$facebook->api(array('method' => 'friends.getAppUsers'));
6
jana

Mit restFB habe ich folgendes gemacht (danke Igy/Alex für die Anleitung). Beachten Sie, dass Facebook eine Reihe von Freund-IDs mit "installiert" = wahr zurückgibt, wenn der Benutzer installiert ist (wie zu sehen ist hier ).

Erweitern Sie zuerst die Benutzerklasse, indem Sie ein installed -Feld hinzufügen:

import com.restfb.Facebook;
import com.restfb.types.User;

public class InstalledUser extends User {

    @Facebook
    private boolean installed;

    public InstalledUser() {        
    }

    public boolean getInsatlled() {
        return installed;
    }
}

Verwenden Sie als Nächstes den DefaultFacebookClient:

FacebookClient facebook = new DefaultFacebookClient(pFacebookAccessToken);
Connection<InstalledUser> installedFacebookUsers = facebook.fetchConnection("/" + pFacebookId + "/friends", InstalledUser.class, Parameter.with("fields", "installed"));        
for (List<InstalledUser> friends : installedFacebookUsers) {
    for (InstalledUser friend : friends) {
        if (friend.getInsatlled()) {
            // Add friend.getId() to a list of ID, or whatever
        }
    }
}
4
Ben Flynn

Die Problemumgehung besteht darin, die Filterung selbst durchzuführen. Vermutlich haben Sie alle Benutzer, die sich für Ihre Anwendung angemeldet haben, in Ihrer eigenen Datenbank. Holen Sie sich also zuerst die Benutzer-Benutzer-IDs aller Freunde und wählen Sie die Benutzer aus Ihrer Datenbank aus, die die entsprechenden Benutzer-IDs haben.

Das neue Facebook Graph API-Programm scheint sehr schlecht ausgeführt und nicht ganz durchdacht zu sein. Es sieht so aus, als hätten sie sich beeilt, es für Facebook f8 zu veröffentlichen, bevor es ausgereift war, und es fehlen viele Funktionen, die zuvor verfügbar waren.

1
schung

Sie können immer noch die alten REST APIs in der neuen Graph API aufrufen. Das ist absolut gültig.

Eine alternative Möglichkeit besteht darin, FQL zu verwenden, um die Freunde des Anwendungsbenutzers zu erhalten.

Ich bin nicht sicher, ob es eine Möglichkeit gibt, dies nur mit der Graph-API zu tun.

0
Roozbeh15