Facebook Friends.getAppUsers с помощью Graph API - PullRequest
87 голосов
/ 07 мая 2010

У меня есть приложение, которое использует старый вызов REST API Friends.getAppUsers, чтобы получить список друзей для текущего пользователя, который авторизовал мое приложение.

Я прочитал документацию, как мне это сделать с помощью Graph API? Каким будет пример этого?

Ответы [ 8 ]

119 голосов
/ 01 ноября 2011

Я некоторое время искал и думал, что это невозможно с помощью Graph API.

Однако я опубликовал аналогичный вопрос, Замена для старого вызова GetAppUsers, чтобы увидеть друзей пользователя, которые используют мое приложение? , для конкретного API, который я использовал, и получил отличный общий ответ.

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

или более обычно

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

Возвращает всех друзей, с дополнительным полем «instal = true» для тех друзей, которые используют приложение.

Вот это работает в Graph API Explorer :

27 голосов
/ 27 октября 2010

Это можно сделать с помощью FQL.

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

QED!

8 голосов
/ 18 мая 2010

Да, API Graph * ужасно задокументировано. Я не вижу никакой документации по «приложению» type , но они ссылаются на информацию приложения в документации:

https://graph.facebook.com/2439131959

Итак, возможно, вы сможете получить членов приложения, используя синтаксис группы?

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

Вам понадобится аутентифицированный сеанс, чтобы проверить его. В противном случае, похоже, что Facebook подталкивает нас к использованию FQL для прямой отправки запросов:

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

Вы можете выполнять FQL-запросы выборка https://api.facebook.com/method/fql.query?query=QUERY. Вы можете указать формат ответа как либо XML или JSON с форматом параметр запроса.

Таким образом, вы можете передать запрос FQL для получения информации о вашем приложении.

6 голосов
/ 28 октября 2010

Старый API REST:

$facebook->api_client->friends_getAppUsers();

Новый API-интерфейс Graph:

$facebook->api(array('method' => 'friends.getAppUsers'));
5 голосов
/ 18 июня 2010

Я провел много исследований по этому вопросу. Из того, что я могу сказать, нет никакого способа сделать Friends.getAppUsers, используя Graph API. Все последние SDK, предоставленные Facebook, используют старый API REST для поиска друзей с помощью приложения.

4 голосов
/ 22 декабря 2011

Используя restFB , я сделал следующее (спасибо Igy / Alex за руководство). Обратите внимание, что Facebook возвращает массив идентификаторов друзей с установленным значением «true» = true, если пользователь установлен (как видно здесь ).

Сначала расширьте класс User, добавив поле installed:

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

Далее, используя 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
        }
    }
}
1 голос
/ 12 августа 2010

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

Новая программа Facebook Graph API выглядит очень плохо выполненной и не совсем продуманной. Похоже, что они поспешили опубликовать его для Facebook f8 до того, как он станет зрелым, и отсутствует множество функций, которые были доступны ранее.

0 голосов
/ 12 января 2011

Вы по-прежнему можете вызывать старые REST API в новом Graph API. Это действительно верно.

Альтернативным способом является использование FQL для получения друзей пользователя приложения.

Я не уверен, есть ли способ сделать это, используя только Graph API.

...