有谁知道为什么无论给定的图形状态更新对象有多少注释,它都会将注释限制在25?我有一种感觉它只返回对象的实际注释的“样本”。如何在不使用FQL API的情况下强制它完成所有操作?
答案 0 :(得分:1)
答案 1 :(得分: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);