Получить всех пользователей нравится (все они) с FQL
Я пытаюсь заставить ВСЕ пользователя нравиться с 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/любит/извлекает информацию на 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 не является вариантом.
Ответы
Ответ 1
Я смог использовать 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
Что раздражает, я не могу получать запросы пользователей от элементов потока для элементов потока событий, статьи потока друзей, элементов группового потока и т.д. Хотя у меня есть все разрешения, принятые для этого пользователя. Не похоже, что я прошу о секретной информации. Разумеется, пользователю может понравиться и удалить понравившиеся элементы потока через мое приложение. Просто я не могу запросить полный список текущих элементов потока, которые понравились пользователю.
Ответ 2
Извините, вы не можете вытащить всех людей, использующих конечную точку /likes
. Мы ограничиваем это тем, что имеет страницу FB, которая является любым открытым объектом графа, без статей. Например, если вам нравится открытый объект графа, который имеет og:type
of article
, мы не возвращаем его в конечной точке графика api likes
.
Ответ 3
Попробуйте этот запрос FQL:
SELECT user_id, object_id, post_id, object_type
FROM like
WHERE user_id = me()