0

AdAccountフィールドは正常です。しかし、広告セットを取得しようとする私の試みはすべて失敗です。私はadaccountの下で実行されているすべてのキャンペーンの洞察を取得しようとしています。しかし、まず、キャンペーン名だけを取得できるかどうかをテストしていましたが、機能していません。注意すべき点がいくつかあります。Facebook広告API(PHP v2.8.1)からadsetフィールドを取得できません

*私は、他の広告アカウント(つまり、すべての広告が作成された主な広告アカウント)への管理アクセス権を持つ同じアカウントを使用して登録されたアプリからのid n secret(ホワイトリストには何もしませんでした)を使用しました。

*グラフエクスプローラで生成した一時アクセストークンを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; 
} 
+1

エラーがありますか? – Tiger

+0

echo '$ u-> name'は、アカウント所有者の名前を返します。それが完全に空白の後です。もし' print_r(adsets) 'を実行すると、多色オブジェクト配列 –

答えて

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);