プロジェクトの場合、Facebookの長期間(たとえば1〜2年)にわたってページの洞察を取得する必要があります。
私は最初に単一のリクエストを実行しようとしましたが、リクエストするだけであることが判明しました
/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では機能しませんでした。一部のリクエストが削除されたように見えることがあり(特に、Google Chromeでブラウザタブを変更した場合)、すべてのリクエストが回答を返すことを確認する必要があります。同期ソリューションは、1つのリクエストに少なくとも2秒が必要であり、日付範囲が2年の場合、約300の単一リクエストがある可能性があることを考えると時間がかかりすぎます。これは完了するのに時間がかかりすぎます。
最後に、私が必要としているのはまさにバッチリクエストを実行するFacebookの機能に出くわしました。1回の呼び出しで最大50のリクエストをパックできるため、帯域幅が大幅に低下します。そして、ここで私は立ち往生しています。facebook apiには、その使用方法に関するいくつかの例が示されていますが、グラフエクスプローラーおよび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"}]
これら2つは実際にはデータを返しますが、パラメーターを無視しています。
?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"}}]
そして、これはこれが「サポートされていないPOSTリクエスト」であることを教えてくれます:
?batch=[{"method":"POST","relative_url":"/PAGE_ID/insights/page_fan_adds/day","body":"since=1332486000 until=1333695600"}]
誰かが助けることができますか?