Получить все лайки пользователя (все) с FQL - PullRequest
12 голосов
/ 30 июня 2011

Я пытаюсь получить ВСЕ лайки пользователей с помощью FQL. Ниже приведены мои исследования, включая то, что я пробовал, и проблемы с каждой попыткой.

1) Самый простой способ - запросить таблицу в uid. Так что это возвращает 57 (для меня) лайков в чужой ленте.

SELECT object_id, post_id, user_id
FROM like
WHERE user_id = me()

XML выглядит следующим образом (обратите внимание на необъяснимое отсутствие post_id)

<like>
    <object_id>10150695050005313</object_id>
    <post_id></post_id>
    <user_id>xxxxxxxxxxx</user_id>
</like>

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

SELECT post_id, message
FROM stream
WHERE post_id IN (
    SELECT object_id, post_id, user_id
    FROM like
    WHERE user_id = me()
)

2) Использование Graph API: / me / likes / извлекает информацию на 95 фан-страницах, но не из фотографий, видео, ссылок или офлайн-контента. Полный URL-адрес: https://graph.facebook.com/me/likes?access_token=

Например:

{
"data": [
  {
     "name": "BStU",
     "category": "Organization",
     "id": "136978696319967",
     "created_time": "2011-06-29T12:09:17+0000"
  },
  {
     "name": "Euchre",
     "category": "Interest",
     "id": "112355915446795",
     "created_time": "2011-06-29T12:06:07+0000"
  },

3) Этот FQL возвращает то же, что и код выше, 95 страниц фанатов:

SELECT page_id,name
FROM page
WHERE page_id IN (
    SELECT page_id
    FROM page_fan
    WHERE uid=me()
)

Итак, подведем итог, в идеале я бы мог вернуть все лайки для пользователя, независимо от объекта. Я готов продвинуться вперед со смесью фанатских страниц и потоковых сообщений, если я смогу вернуть их все вместе с данными одним FQL-запросом.

Есть предложения? Я добавлю, что я пытаюсь сделать это без использования REST API, потому что он будет ухудшен (когда-нибудь?), Поэтому использование fql.multiquery не вариант.

Ответы [ 3 ]

2 голосов
/ 12 января 2012

Мне удалось использовать FQL для получения некоторых, но не всех, лайков в потоке. Смотри: http://facebook.stackoverflow.com/questions/8496980/fql-like-table-not-returning-any-results

Я получил следующие запросы:

1) Дает мне потоковые записи, которые мне понравились в фидах страниц:

 SELECT post_id, source_id, message 
   FROM stream 
  WHERE source_id 
     IN (SELECT target_id FROM connection WHERE source_id=me() and is_following=1) 
    AND likes.user_likes=1 
  LIMIT 10

2) Дает мне потоковые записи, которые мне понравились, из моего фида, который я сам разместил:

 SELECT post_id, source_id, message 
   FROM stream 
  WHERE source_id=me() 
    AND likes.user_likes=1 
  LIMIT 10

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

1 голос
/ 19 июля 2011

Извините, вы не можете использовать все возможности человека, используя конечную точку /likes. Мы ограничиваем его всем, что имеет страницу FB, которая является любым открытым графическим объектом, без статей. Например, если вам нравится объект с открытым графом, у которого og:type равен article, мы не возвращаем его в конечную точку графа api likes.

0 голосов
/ 03 июня 2014

Попробуйте этот FQL-запрос:

SELECT user_id, object_id, post_id, object_type 
FROM like 
WHERE user_id = me()
...