Получить список друзей, которые сделали настраиваемое действие над настраиваемым объектом в открытом графике 2 - PullRequest
22 голосов
/ 09 февраля 2012

Я бы хотел сделать что-то вроде лицевой панели, используя API-интерфейс graph с действиями open graph 2: из пользовательского объекта и пользовательского объекта, дайте мне друзей (с помощью моего приложения facebook), которые выполняли это действие с этим объектом.

Проблема в том, что, используя FQL, я не могу запрашивать пользовательские объекты и действия.Используя API графика, я не могу найти способ пересечения списка моих друзей с объектом, который меня интересует.

Лучшее, что я мог сделать, - это использовать пакетный режим API графика:1005 *

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 ]

6 голосов
/ 14 февраля 2012

Это, вероятно, не совсем то, что вы ищете, но учитывая тот факт, что Facebook (AFAIK) не предоставляет (и, вероятно, никогда не предоставит) возможность сделать это.Я думаю, что вы должны просто сохранить информацию самостоятельно, а затем запросить данные из вашей собственной базы данных.Это было бы похоже на то, что вы делаете в своем вопросе, но вы можете оптимизировать его, поскольку это ваша база данных.

Я уверен, что вы уже думали об этом, но кто-то должен был это сказать.

3 голосов
/ 03 сентября 2012

Теперь это можно сделать с помощью одного запроса API Graph:

GET https://graph.facebook.com/me/friends?limit=50&fields=name,namespace:testaction.limit(100)

см. расширение поля и обновления API графика .

3 голосов
/ 15 февраля 2012

Если ответа, который дал derickito, недостаточно, вам следует изучить возможность включения своего приложения в белый список Facebook (или стать партнером), чтобы получить доступ к частному API Graph, где эта функция может существовать, но недоступна для ".обычное "приложение, застрявшее с помощью общедоступного API-интерфейса Graph.

...