从facebook4j的帖子中获取评论

时间:2014-07-11 11:07:16

标签: java facebook-graph-api

我正在使用facebook4j和java,并且我会在Facebook的公开个人资料中发表所有评论。我设法阅读每篇文章的前25条评论,但不是其他所有内容。我知道有一种寻呼逻辑,但我无法设法在页面之间传递。我从帖子中获取评论的代码是:

ResponseList<Post> feeds = facebook.getFeed(p.getRiferimento());
Post post = feeds.get(0);
PagableList<Comment> commenti = post.getComments();
commenti.size();   // return me always 25

我试图循环纪念,但我只到达第一个元素;我也尝试将PagableList转换为数组,但它只有25个元素。如果我从纪念中采取Paging或Cursor并且我循环它们,它们会循环;最后如果我写了getCount(),它总是返回null。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

不确定回答问题是否为时已晚。

是的,你需要使用Paging来获取下一页的项目,使用fetchNext()来获取页面中的项目。如果到达页面末尾,它将返回null。以下是示例:

public List<Comment> getComments(Post post) {
    List<Comment> fullComments = new ArrayList<>();
    try {
        // get first few comments using getComments from post
        PagableList<Comment> comments = post.getComments();
        Paging<Comment> paging;
        do {
            for (Comment comment: comments)
                fullComments.add(comment);

            // get next page
            // NOTE: somehow few comments will not be included.
            // however, this won't affect much on our research
            paging = comments.getPaging();
        } while ((paging != null) && 
                ((comments = fb_.fetchNext(paging)) != null));

    } catch (FacebookException ex) {
        Logger.getLogger(Facebook.class.getName())
                .log(Level.SEVERE, null, ex);
    }

    return fullComments;
}

但是(我在评论中添加了一个注释),很少有评论会丢失。我还不确定原因。由于这个数字很小而且不会影响我的研究,我只想留下它。