如果我请求包含大量对象的内容(例如,如果您在相册中有10000个朋友或10000张照片),C#Facebook SDK会自动跟随“Paging:Next”链接,或者有什么我需要做的吗?
我查看了他们的代码并没有看到任何提及分页,但可能错过了它。
请注意,我没有谈论批量请求;我说的是一个简单的api.Get(“/ me / friends”),其中Facebook决定有太多的对象放在一个响应中。不幸的是,我没有足够的帐户来测试结果......
答案 0 :(得分:1)
无论用于Facebook的哪个SDK,分页始终取决于SDK的用户。我不认为他们在添加内容时已经有了创意,或者可能有一些他们没有的法律原因。
答案 1 :(得分:1)
感谢。万一它可以帮助别人,这里是我用完的代码。因为我从专辑中知道" count"我想要多少张图片我只是按批次要求它们。如果您事先并不知道有多少物品会被收回,那么对于那些已经不再需要它的物品来说,它会变得更加棘手,但我还没有遇到过这样的需求。
const long maxBatchSize = 50;
for (long q = 0; q < album.Count; q += maxBatchSize)
{
var facebook = new FacebookClient(FacebookSession.AccessToken);
facebook.GetCompleted += new EventHandler<FacebookApiEventArgs>(GetPhotosCallback);
long take = album.Count - q;
if (take > maxBatchSize)
take = maxBatchSize;
dynamic parameters = new ExpandoObject();
parameters.limit = take;
parameters.offset = q;
facebook.GetAsync("/" + album.Id + "/photos", parameters, null);
}
答案 2 :(得分:0)
如果查看Facebook返回的数据,结果中通常会有分页元素。分页元素包含下一个和前一个URL。这些URL由Facebook创建,“下一个”可用于检索更多信息。以下是/ me / posts -request的令牌示例:
{
data: [ ... ],
"paging": {
"previous": "https://graph.facebook.com/6644332211/posts?limit=25&since=1374648795",
"next": "https://graph.facebook.com/6644332211/posts?limit=25&until=1374219441"
}
}
如果要自动检索所有项目,可以从“下一个”网址中选择相关参数,并将Facebook SDK get方法传递给它们。
您需要选择的相关参数取决于您要检索的信息类型。在帖子中你只有“直到”,对于签到我也可以看到叫做pagingtoken的东西。