C#Facebook SDK和自动分页

时间:2012-06-05 17:16:59

标签: facebook-graph-api facebook-c#-sdk

如果我请求包含大量对象的内容(例如,如果您在相册中有10000个朋友或10000张照片),C#Facebook SDK会自动跟随“Paging:Next”链接,或者有什么我需要做的吗?

我查看了他们的代码并没有看到任何提及分页,但可能错过了它。

请注意,我没有谈论批量请求;我说的是一个简单的api.Get(“/ me / friends”),其中Facebook决定有太多的对象放在一个响应中。不幸的是,我没有足够的帐户来测试结果......

3 个答案:

答案 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的东西。