2

我正在尝试使用 facebook4j 库从帖子中读取 facebook 评论。它只返回帖子,但不返回该帖子的评论。即使任何帖子中有更多评论,它也总是返回空。谁能指导我从特定帖子中获取所有评论的正确方法?

import facebook4j.Comment;
import facebook4j.Facebook;
import facebook4j.FacebookException;
import facebook4j.FacebookFactory;
import facebook4j.PagableList;
import facebook4j.Post;
import facebook4j.Reading;
import facebook4j.ResponseList;
import facebook4j.auth.AccessToken;

public class PostsFromPageExtractor {

    /**
    * A simple Facebook4J client which
    * illustrates how to access group feeds / posts / comments.
    *
    * @param args
    * @throws FacebookException
    */
    public static void main(String[] args) throws FacebookException {

        // Generate facebook instance.
        Facebook facebook = new FacebookFactory().getInstance();
        // Use default values for oauth app id.
        facebook.setOAuthAppId("", "");
        // Get an access token from:
        // https://developers.facebook.com/tools/explorer
        // Copy and paste it below.
        String accessTokenString = "PASTE_YOUR_ACCESS_TOKEN_HERE";
        AccessToken at = new AccessToken(accessTokenString);
        // Set access token.
        facebook.setOAuthAccessToken(at);

        // We're done.
        // Access group feeds.
        // You can get the group ID from:
        // https://developers.facebook.com/tools/explorer

        // Set limit to 25 feeds.
        ResponseList<Post> feeds = facebook.getFeed("187446750783",new Reading().limit(25));

        // For all 25 feeds...
        for (int i = 0; i < feeds.size(); i++) {
            // Get post.
            Post post = feeds.get(i);
            // Get (string) message.
            String message = post.getMessage();
            // Print out the message.
            System.out.println(message);

            // Get more stuff...
            PagableList<Comment> comments = post.getComments();
            String date = post.getCreatedTime().toString();
            String name = post.getFrom().getName();
            String id = post.getId();
        }
    }
}

String name = "pagename";
ResponseList<Post> feeds = facebook.getFeed(name, new Reading().limit(250));
System.out.println(feeds.size());
4

1 回答 1

3

我认为在 2.4 版左右,Facebook 现在要求您在发出获取请求时指定您感兴趣的字段。如果您不指定这些字段,则仅返回帖子。评论是这些领域之一。

要指定您将使用该Reading对象的字段,就像您在指定要返回的项目数时一样:

// Specify all fields of interest like description, created_time, from, etc.
final Reading reading = new Reading().limit(25).fields("comments"); 
final ResponseList<Post> feeds = facebook.getFeed("187446750783", reading);

其余的应该是一样的。

于 2015-11-04T05:31:38.923 回答