Facebook API(PHP):获取完整的广告列表

时间:2018-11-19 11:27:35

标签: php facebook api facebook-graph-api facebook-php-sdk

我正在使用Facebook API来获取完整的广告列表。

该代码有效,但是如果我的帐户中有150多个广告,则该代码仅返回25个广告。

我猜想是因为Facebook API的查询限制。

我的代码:

$account = new AdAccount('act_<AD_ACCOUNT_ID>');
$account->read();

$fields_adset = array(
  AdSetFields::ID,
  AdSetFields::NAME,
  AdSetFields::CAMPAIGN_ID,
  AdSetFields::STATUS,
);

$ads = $account->getAds($fields_adset);

foreach ($ads as $adset) {
    $adset_id = $adset->{AdSetFields::ID};
    echo  $adset_id;
    //print_r($adset);
    //exit();
}

因此,他们在文档中提到:

  

使用异步请求来查询大量数据

参考(1):https://developers.facebook.com/docs/marketing-api/best-practices/

参考(2):https://developers.facebook.com/docs/marketing-api/insights/best-practices/#asynchronous

但是,我无法将“异步”请求应用于我的代码以获取完整的广告列表,

请帮助我获取完整的广告列表

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该实现分页(或要求更高的限制)。使用PHP SDK,您可以将光标实现为described in the doc here,或者更简单地设置Implicit Fetching,例如:

..
use FacebookAds\Cursor;

...
Cursor::setDefaultUseImplicitFetch(true);


$account = new AdAccount('act_<AD_ACCOUNT_ID>');
$account->read();

$fields_adset = array(
  AdSetFields::ID,
  AdSetFields::NAME,
  AdSetFields::CAMPAIGN_ID,
  AdSetFields::STATUS,
);

$ads = $account->getAds($fields_adset);

foreach ($ads as $adset) {
    $adset_id = $adset->{AdSetFields::ID};
    echo  $adset_id;
    //print_r($adset);
    //exit();
}

希望获得帮助