我正在使用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
但是,我无法将“异步”请求应用于我的代码以获取完整的广告列表,
请帮助我获取完整的广告列表
谢谢。
答案 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();
}
希望获得帮助