You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于RestFB获取Facebook帖子评论的用户ID

嘿,我来帮你搞定用RestFB获取Facebook帖子评论用户ID的问题!你之前的尝试没成功,大概率是因为没明确指定评论里的用户字段——RestFB需要你精准声明要拉取的嵌套数据才行。下面是具体的解决步骤:

1. 确保使用最新版RestFB

旧版本的RestFB可能对Facebook Graph API的字段嵌套支持不太完善,先把依赖更新到最新版,比如Maven里的依赖:

<dependency>
    <groupId>com.restfb</groupId>
    <artifactId>restfb</artifactId>
    <version>2024.2.0</version> <!-- 替换成最新版本 -->
</dependency>
2. 正确构造请求,指定评论的用户字段

你需要在请求参数里明确指定comments的子字段,比如from.id(用户ID)、from.name(用户名)这些,而不是只请求comments本身。示例代码如下:

// 初始化FacebookClient(确保传入有效的访问令牌)
FacebookClient facebookClient = new DefaultFacebookClient("你的访问令牌", Version.LATEST);

// 目标帖子ID,格式是「页面ID_帖子ID」或者「用户ID_帖子ID」
String targetPostId = "123456789_987654321";

// 构造请求参数,指定要获取的字段:包括评论的作者ID、姓名、评论内容等
Parameter[] requestParams = Parameter.withFields(
    "comments.order(chronological).summary(true).limit(100){from.id,from.name,message,created_time}"
);

// 获取包含评论数据的帖子对象
Post fetchedPost = facebookClient.fetchObject(targetPostId, Post.class, requestParams);

// 遍历评论列表,提取用户ID
if (fetchedPost.getComments() != null && fetchedPost.getComments().getData() != null) {
    for (Comment comment : fetchedPost.getComments().getData()) {
        User commentAuthor = comment.getFrom();
        if (commentAuthor != null) {
            String userId = commentAuthor.getId();
            String userName = commentAuthor.getName();
            System.out.println("评论用户ID: " + userId + " | 用户名: " + userName);
        }
    }
}
3. 处理大量评论的分页场景

如果帖子的评论数量超过你设置的limit(比如上面的100条),需要用fetchConnection来处理分页:

// 建立评论的分页连接
Connection<Comment> commentConnection = facebookClient.fetchConnection(
    targetPostId + "/comments",
    Comment.class,
    Parameter.with("order", "chronological"),
    Parameter.with("fields", "from.id,from.name,message"),
    Parameter.with("limit", 100)
);

// 遍历所有分页的评论
for (List<Comment> commentPage : commentConnection) {
    for (Comment comment : commentPage) {
        User author = comment.getFrom();
        if (author != null) {
            System.out.println("评论用户ID: " + author.getId());
        }
    }
}
4. 权限与常见坑点排查
  • 权限确认:虽然你说启用了所有权限,还是要核对是否包含pages_read_engagement(访问公共页面帖子)或user_posts(访问用户个人帖子),测试令牌要确保未过期且关联了正确的测试应用。
  • 帖子ID格式:必须是完整的ID(比如从页面帖子详情里复制的页面ID_帖子ID),不能只填帖子的后半段。
  • Graph API版本:初始化FacebookClient时指定Version.LATEST,避免因API版本兼容问题导致字段无法获取。

内容的提问来源于stack exchange,提问作者Evandro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:54:18