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

Facebook API (PHP) : Get Full Ads List

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

代码有效,但如果我的帐户中有 150+ 个广告,它 return 只有 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();
}

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

Use Asynchronous Requests to query a huge amount of data

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

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

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

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

谢谢。

您应该实施分页(或请求更高的限制)。使用 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();
}

希望对您有所帮助