Получить список друзей, которые сделали настраиваемое действие над настраиваемым объектом в открытом графике 2
Я хотел бы сделать что-то вроде лицевой панели, используя график API с действиями открытого графика 2: из пользовательского объекта и пользовательского объекта, дайте мне друзей (с помощью моего приложения Facebook), которые сделали это действие с этим объектом.
Проблема в том, что, используя FQL, я не могу запрашивать пользовательские объекты и действия. Используя 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" }
]
Это довольно неэффективно и не полностью решает мою проблему, так как:
- Мне все еще нужно отфильтровать результаты, чтобы получить только тот, который соответствует объекту, который я хочу
- Если в пространстве имен имеется большое количество объектов: testaction, мне нужно пройти по страницам и выполнить больше запросов (я стараюсь свести к минимуму количество запросов)
Вы видите лучший способ сделать это?
3 ответа
Теперь это можно сделать одним запросом Graph API:
GET https://graph.facebook.com/me/friends?limit=50&fields=name,namespace:testaction.limit(100)
смотрите расширение поля и обновления API графа.
Это, вероятно, не совсем то, что вы ищете, но учитывая тот факт, что Facebook (AFAIK) не предоставляет (и, вероятно, никогда не предоставит) возможность сделать это. Я думаю, что вы должны просто сохранить информацию самостоятельно, а затем запросить данные из вашей собственной базы данных. Это будет похоже на то, что вы делаете в своем вопросе, но вы можете оптимизировать его, так как это ваша база данных.
Я уверен, что вы уже думали об этом, но кто-то должен был сказать это.
Если ответ, который дал derickito, недостаточен, вам следует изучить возможность включения своего приложения в белый список Facebook (или стать партнером), чтобы получить доступ к частному API Graph, где эта функция может существовать, но недоступна для "нормального" приложения. которые застряли с помощью общедоступного API-интерфейса Graph.