Получить список друзей, которые выполнили пользовательское действие над пользовательским объектом в open graph 2
Я хотел бы сделать что-то вроде facepile, используя graph api с открытыми действиями graph 2 : из пользовательского объекта и пользовательского объекта, дайте мне друзей (с помощью моего приложения facebook), которые сделали это действие на этом объекте.
Проблема в том, что с помощью FQL я не могу запрашивать пользовательские объекты и действия. Используя graph API, я не могу найти способ пересечь список моих друзей с объектом, который меня интересует.
Лучшее, что я мог сделать, это использовать пакетный режим из графа API:
batch=[
// First we get the list of friends that are using my facebook application
{ "method": "GET", "relative_url": "fql?q=SELECT+uid+FROM+user+WHERE+uid+IN+(SELECT+uid1+FROM+friend+WHERE+uid2=me())+AND+is_app_user=1+LIMIT+0,49", "name": "friends"},
// Then query each friend to get the list of objects that went through my namespace:testaction
{ "method": "GET", "relative_url": "{result=friends:$.data.0.uid}/namespace:testaction" },
{ "method": "GET", "relative_url": "{result=friends:$.data.1.uid}/namespace:testaction" },
...
{ "method": "GET", "relative_url": "{result=friends:$.data.49.uid}/namespace:testaction" }
]
Это довольно неэффективно и не полностью решает мою проблему, так как:
- мне все еще приходится фильтровать результаты, чтобы получить только тот, который соответствует объект, который я хочу
- Если в namespace есть большое количество объектов: testaction, я должен пройти подкачку, делая больше запросов (я стараюсь минимизировать количество запросов)
Видите ли вы лучший способ сделать это ?
3 ответа:
Теперь это можно сделать с помощью одного запроса API Graph:
GET https://graph.facebook.com/me/friends?limit=50&fields=name,namespace:testaction.limit(100)
Смотритерасширение поля иобновления графического API .
Это, вероятно, не совсем то, что вы ищете, но учитывая тот факт, что facebook (AFAIK) не предоставляет (и, вероятно, никогда не предоставит) возможность сделать это. Я думаю, что вы должны просто хранить информацию самостоятельно, а затем запрашивать данные из своей собственной базы данных. Это будет похоже на то, что вы делаете в своем вопросе, но вы можете оптимизировать его, так как это ваша база данных.
Я уверен, что вы уже думали об этом, но кто-то должен был сказать это.
Если ответ, который дал дерикито, недостаточен, вам следует изучить возможность включения вашего приложения в белый список Facebook (он же стать партнером), чтобы получить доступ к частному API Graph, где эта функциональность может существовать, но недоступна для "обычных" приложений, которые застряли с использованием публичного API Graph.