2013-02-27 3 views
2

Мне особенно не нравится идея получить список друзей с помощью «me/friends», а затем повторить список, чтобы получить понравившиеся для конкретного друга «% id %/нравится '- это длится долго.Facebook Graph API: получить все понравившиеся друзья

Есть ли способ массового запроса похожих на друзей пользователей в одном вызове API?

Спасибо.

ответ

5

Вы можете использовать FQL мульти-запрос, чтобы получить все сразу, вот как:

{ 
"friends":"SELECT name, uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())", 
"friendsLikes":"SELECT uid, page_id FROM page_fan WHERE uid IN (SELECT uid FROM #friends)", 
"pages":"SELECT page_id, name FROM page WHERE page_id IN (SELECT page_id FROM #friendsLikes)" 
} 

Вы можете проверить это в http://developers.facebook.com/tools/explorer/
Вы собираетесь получить три результата устанавливает один за другим, список друзей, список всех их симпатий вместе, а затем список имен страниц.
(Обратите внимание, что выполнение запроса может занять некоторое время, поэтому вы можете поместить LIMIT в первую строку. После uid1 = me() введите LIMIT 5, например, для тестирования ...)

Затем включите его в своем коде на любом языке/платформе, которую вы используете, например, на прошивке: http://developers.facebook.com/docs/howtos/run-fql-queries-ios-sdk/

+0

Отлично! Теперь есть способ сгруппировать этих пользователей по идентификатору пользователя непосредственно в запросе? –

+1

К сожалению, это невозможно. Facebook FQL поддерживает только очень простой SQL и нет JOIN. Вы можете увидеть больше здесь: https://developers.facebook.com/docs/technical-guides/fql/ –

+0

Я снова попробовал тот же запрос, и у меня есть {"error": "Request failed"}. Похоже, что полученный json превысил пороговый размер. Кроме того, невозможность группировать по uid является реальным обломком. –

Смежные вопросы