Facebook 连接图状态对象的评论上限为 25

Posted

技术标签:

【中文标题】Facebook 连接图状态对象的评论上限为 25【英文标题】:Facebook connect graph status objects have comments capped at 25 【发布时间】:2011-01-20 08:03:36 【问题描述】:

有谁知道为什么无论给定图形状态更新对象有多少个 cmets,它都会将 cmets 限制在 25 个?我有一种感觉,它只返回对象上实际 cmets 的“样本”。如何在不使用 FQL API 的情况下强制它全部获取?

【问题讨论】:

它根本不会限制我的 4。您的 FQL 查询是什么? 对不起伙计,我在你下面稍微改变了问题 【参考方案1】:

这正是 Graph API 的工作方式。查看 API 文档。您一次获得 25 个,并且必须循环遍历它们。您可以使用批处理中最后一条评论的时间戳 (created_time) 作为下次 Graph API 调用中的参数,也可以使用 offset 参数。这就是我一直在做的事情。我在使用created_time 时遇到了一些麻烦。这是我的 C# 测试应用程序中的一个示例。忽略对PostComment 对象的引用,该对象只是我创建的用于保存要提取的数据的数据结构。魔术(以及我引用的过程)在于传递给图形 API 调用的参数:

parameters.Add("offset", numPostComments);
parameters.Add("limit", 25);

我相当确定您可以将“限制”设置为 25 或以下的任何值。

do

    foreach (var comment in comments.data)
        
            numPostComments++;
            PostComment pc = new PostComment();
            pc.Post_ID = p.Id;
            pc.Facebook_ID = comment.id;
            pc.From = comment.from.name;
            if (comment.likes != null)
                pc.Likes = (int)comment.likes;
            pc.CommentDate = DateTime.Parse(comment.created_time);
            pc.CommentText = comment.message;
            p.Comments.Add(pc);
        
        // Create new Parameters object for call to API
        Dictionary<string, object> parameters = new Dictionary<string, object>();
        parameters.Add("offset", numPostComments);
        parameters.Add("limit", 25);

        // Call the API to get the next block of 25
        comments = client.Get(string.Format("0/comments", p.Facebook_ID), parameters);
 while (comments.data.Count > 0);

【讨论】:

以上是关于Facebook 连接图状态对象的评论上限为 25的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Open Graph,提交故事评论

使用 codeigniter 的 Facebook 评论

以编程方式发布 Facebook 评论

Facebook Graph API 不提供任何早于 2011 年的数据?

在 facebook 外的 facebook 粉丝页面上发表评论和点赞新闻

为基于 Web 的 phonegap 应用添加 facebook 评论框插件