我收到AdAccount字段就好了。但我尝试获取广告的所有尝试都失败了。我正在尝试深入了解在adaccount下运行的所有广告系列。但首先我测试的是我是否只能获取广告系列名称,但它不起作用。有些要点需要注意。
*我使用了一个应用程序的id n secret(对于白名单没有做任何事情),该帐户使用对另一个广告帐户具有管理员访问权限的同一帐户(即创建所有广告的主要adAcount)。
*我使用了使用graph explorer生成的临时访问令牌,其中包含ads_read& ads_management权限。
* Get->v2.8->me?fields=adaccounts{campaigns{adsets{name}}}
在浏览器上获取完全正确的名称。
include 'vendor/autoload.php';
use FacebookAds\Api;
Api::init(APP_ID, APP_SECRET, ACCESS_TOKEN);
$api = Api::instance();
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\Fields\AdAccountFields;
use FacebookAds\Object\Fields\AdSetFields;
$fields = array(
AdAccountFields::ID,
AdAccountFields::NAME
);
$account = new AdAccount('act_XXX');
$u=$account->read($fields);
echo $u->name.'<br>';
$adsets = $account->getAdSets(array(
AdSetFields::NAME
));
foreach ($adsets as $adset) {
echo $adset->name;
}
答案 0 :(得分:0)
试试吧! 使用FacebookAds \ Api;
Api::init($app_id, $app_secret, $access_token);
use FacebookAds\Object\Campaign;
use FacebookAds\Object\Fields\AdSetFields;
$account = new Campaign($campaign_id);
$objects = $account->getAdSets(array(
AdSetFields::NAME,
AdSetFields::ID,
AdSetFields::STATUS,
));
$objects->setUseImplicitFetch(true); // set this before loop
foreach ($objects as $object) {
if($object->{AdSetFields::STATUS}=='ACTIVE'){
$adset_id= $object->{AdSetFields::ID};
$name= $object->{AdSetFields::NAME};
$status = $object->{AdSetFields::STATUS};
$values[] = array(
'adset_id' => $adset_id,
'name' => $name,
'status' => $status,
);
}
}
echo json_encode($values);