如何使用Facebook API调用超过100种状态?

时间:2012-01-12 23:42:31

标签: facebook facebook-graph-api

我正在构建一个Facebook应用程序,我希望它能够读取过去一年中所有用户的状态。当我进行API调用时,无论我将限制设置为什么,我都只能检索前100个状态。

这是我用来拨打电话的网址: https://graph.facebook.com/me/statuses?limit=100&access_token= ...

当我将限制设置为较低时,它会显示较少的状态(证明限制参数有效)。当我将限制设置得更高时,它只给我前100个。当我使用'since'时,它仍然只给我100个。

当我使用它的“下一个”网址时,我看到没有数据超过前100个状态。

我知道由于My Year In Status

等应用程序,可能会获得更多

5 个答案:

答案 0 :(得分:6)

确实有效。您必须同时使用limitoffset查询参数。 limit参数设置批量大小。 offset参数设置用户的历史状态集合中的位置。如果不指定offset参数,Facebook会将其默认为零,这就是您持续查看相同数据集的原因。

对于第一批100个状态,请将limit设为100,将offset设为0
对于第二批100个状态,请将limit设置为100,将offset设置为100
对于第3批100个状态,请将limit设置为100,将offset设置为200
对于第4批100个状态,请将limit设置为100,将offset设置为300
等等...

继续迭代直到获得空数据集:

{
   "data": []
}

答案 1 :(得分:4)

我已经使用Graph API资源管理器验证了分页不起作用,如您所述。将其记录为Facebook的错误:https://developers.facebook.com/bugs并在此处发布错误#。

修改

根据错误关闭,100限制是按设计,你不会得到更多,这意味着Facebook已经有意识的商业决策 限制数据量它必须从Graph API 存储,处理和提供。这样做需要花钱,而且由于API可以免费使用,我不能与他们争论。但是,如果我付钱的话,那么我一直踢,并一路尖叫。

答案 2 :(得分:3)

分页直到参数也不适合我。

但我发现,使用偏移参数,我可以获得超过100种状态。 这是我的代码使用 Facebook C#SDK

var fb = new FacebookClient(accessToken);

string connection = "statuses";
string urltemplate = "https://graph.facebook.com/me/{0}?limit={1}&offset={2}";

int limit = 25;     //items on one page (Max is value 100)
int offset = 0;

var statuses = (IDictionary<string, object>)fb.Get(string.Format(urltemplate, connection, limit, offset));

while (statuses != null && statuses.ContainsKey("data") && ((Facebook.JsonArray)statuses["data"]).Count > 0)
{
    var dataItems = (Facebook.JsonArray)statuses["data"];

    foreach (Facebook.JsonObject item in dataItems)
    {
        //TODO: process item data
        System.Diagnostics.Debug.WriteLine(item["message"]);
    }

    offset += limit;
    statuses = (IDictionary<string, object>)fb.Get(string.Format(urltemplate, connection, limit, offset));
}

答案 3 :(得分:1)

这个工作在一周前发布,我们最好的办法就是在http://developers.facebook.com/bugs/155458081230560发帖,以便facebook开发人员知道这是一个多大的问题。

答案 4 :(得分:0)

Facebook没有真正测试就关闭了之前的bug,发现它没有用。我在这里制作了一个新错误:https://developers.facebook.com/bugs/242235199184053