对于一个项目,我必须在很长一段时间(例如 1-2 年)的 facebook 上获取页面的见解。
我首先尝试做一个请求,但结果证明只请求
/PAGE_ID/insights?since=xxx&until=xxx
不会返回我想要的所有数据(它以某种方式抑制数据,好像答案的大小有一些限制)。
然后我尝试拆分日期范围(例如 01.04.2011-01.04.2011 -> 01.04.2011-01.08.2011-01.12.2011-01.04.2011),这也没有像我想要的那样工作.
我的下一个方法是仅请求我需要的洞察力值,例如“page_stories、page_impressions、...”。请求看起来像这样
/PAGE_ID/insights/page_impressions/day?since=xxx&until=xxx
这实际上有效,但不适用于 ajax。它有时似乎放弃了一些请求(特别是如果我更改了谷歌浏览器中的浏览器选项卡),我需要确保所有请求都返回答案。考虑到一个请求至少需要 2 秒并且日期范围为 2 年,同步解决方案将花费太多时间,我可能有大约 300 个单个请求,这需要太长时间才能完成。
最后,我偶然发现了 facebook 执行批量请求的能力,这正是我所需要的。它可以在一次调用中打包多达 50 个请求,从而显着降低带宽。这就是我卡住的地方。facebook api 提供了一些关于如何使用它的示例,但是当我在 Graph Explorer 中和通过 php facebook api sdk 测试它们时,它们都不起作用。我试图打包这个请求
PAGE_ID/insights/page_fan_adds/day?since=1332486000&until=1333695600
进入批处理请求但失败。
似乎api被窃听了。当我使用问号“?”时,它总是给我这个错误 在“relative_url”字段中。
{
"error": {
"message": "batch parameter must be a JSON array",
"type": "GraphBatchException"
}
}
这是我尝试过的:
这些给出了“必须是 JSON 数组”错误:
?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day?since=1332486000&until=1333695600"}]
这两个实际上返回数据,但它们忽略了参数:
?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":"since=1332486000 until=1333695600"}]
?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":"since=1332486000,until=1333695600"}]
?batch=[{"method":"GET","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":{"since":"1332486000","until":"1333695600"}}]
这个告诉我这是一个“不支持的发布请求”:
?batch=[{"method":"POST","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":"since=1332486000 until=1333695600"}]
有人可以帮忙吗?