2013-02-12 2 views
1

Я пытаюсь получить все сообщения и комментарии на странице Facebook. Это работает довольно хорошо до сих пор с помощью следующей FQL:Fetching все сообщения и комментарии с страницы Facebook

{'all_posts': 
'SELECT created_time, post_id, actor_id, message, description, comments FROM stream 
    WHERE source_id=PAGE_ID ORDER BY created_time', 
'comments': 
    'SELECT id, fromid, post_fbid, text, time, post_id FROM comment WHERE post_id 
    IN (SELECT post_id FROM #all_posts) ORDER BY post_id' 
} 

Я пытаюсь использовать RestFB библиотеку, но я получаю

com.restfb.exception.FacebookResponseStatusException: Received Facebook error response 
(code 601): Parser error: unexpected '{' at position 0. 

, когда я пытаюсь выполнить запрос:

List<JsonObject> queryResults = facebookClient.executeQuery(query, JsonObject.class); 

Как я могу решить эту проблему?

Заранее спасибо.

+0

Что ваш запрос, вы передаете на 'executeQuery()'? – robonerd

+0

Я передал запрос, упомянутый после «следующего fql» выше, чтобы выполнить Query. И это была ошибка, потому что, как я узнал сейчас, мне нужно использовать Multiquery-Support. Я отправлю рабочий код в качестве ответа сразу. –

+1

Я отвечу на него позже, потому что я должен ждать 8 часов, пока мне не позволено отвечать. –

ответ

0

Я думал, что это была ошибка на стороне RestFB, разобрав результат json, потому что я получил несколько Исключений и был немного смущен.

Правильный способ сделать это состоит в использовании Multiquery Поддержка RestFB (Executing Multiqueries with RestFb)

Map<String, String> queries = new HashMap<String, String>(); 
queries.put("all_posts", "select created_time, post_id, actor_id, message, description, comments from stream where source_id=279947942083512 ORDER BY created_time"); 
queries.put("comments", "SELECT fromid, username, text, time, post_id FROM comment WHERE post_id in (SELECT post_id FROM #all_posts) ORDER BY post_id"); 

MultiqueryResults queryResults = facebookClient.executeMultiquery(queries, MultiqueryResults.class); 

Вы должны предоставить MultiqueryResults Bean, как описано в 1

+0

может ли кто-нибудь сделать пример MultiqueryResults Bean для этих запросов? :) – JackTurky

+0

PostsAndCommentsMultiqueryResults общественного класса { \t @Facebook ("all_posts") \t частный Список сообщений; \t \t @Facebook \t закрытый список комментарии; \t открытый список getPosts() { \t \t возвратные столбы; \t} \t общественного List getComments() { \t \t возвращаемые комментарии; \t} \t \t } –

+1

вы должны создать бобы для StreamComment и StreamPost. Вы не можете использовать Post-Class из RestFB, потому что это для Graph API –

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