【发布时间】:2015-05-19 21:00:40
【问题描述】:
我正在尝试通过他们的 PHP SDK 创建一个 Facebook 广告。问题在于广告本身的制作。如果我注释掉最后一块,它会创建广告集。当我运行此代码时,我收到错误“需要父 ID”
try {
///////////////////////////// CREATE AD SET ////////////////////////////////////
$data = array(
AdSetFields::NAME => $adname,
AdSetFields::BID_TYPE => 'CPC',
AdSetFields::BID_INFO => array(
'CLICKS' => 6,
),
AdSetFields::CAMPAIGN_STATUS => AdSet::STATUS_PAUSED,
AdSetFields::DAILY_BUDGET => 500000,
AdSetFields::CAMPAIGN_GROUP_ID => $campaign_id,
AdSetFields::TARGETING => array(
'age_min' => 30,
'age_max' => 45,
'page_types' => array(
'desktopfeed',
),
'geo_locations' => array(
'countries' => array(
'US',
),
),
),
);
$adset = new AdSet(null, $account_id);
$adset->create($data);
$adset_id = $adset->id;
echo $adset_id.'-';
//////////////////////CREATE AD IMAGE ///////////////////////////////
$image = new AdImage(null, $account_id);
$image->{AdImageFields::FILENAME} = '../adimages/epsom.jpg';
$image->create();
$creative = new AdCreative(null, $account_id);
$creative->setData(array(
AdCreativeFields::TITLE => $adtitle,
AdCreativeFields::BODY => $addesc,
AdCreativeFields::OBJECT_URL => $tracking_promoted_url,
AdCreativeFields::IMAGE_HASH => $image->hash,
));
$creative->create();
echo $creative->id.'-';
/////////////////////////////// CREATE AD GROUP ////////////////////////////
$fields = array(array(
AdGroupFields::CREATIVE =>
array('creative_id' => $creative->id),
AdGroupFields::ADGROUP_STATUS => AdGroup::STATUS_PAUSED,
AdGroupFields::NAME => 'My First AdGroup',
AdGroupFields::CAMPAIGN_ID => $adset_id,
));
$ad = new AdGroup();
$ad->create($fields);
echo 'AdGroup ID:' . $adgroup->id . "-";
} catch (RequestException $e) {
echo 'Caught Exception: '.$e->getMessage().PHP_EOL
.'Code: '.$e->getCode().PHP_EOL
.'HTTP status Code: '.$e->getHttpStatusCode().PHP_EOL;
}
【问题讨论】:
-
该错误是来自该 SDK 中的某处还是来自 API 本身?您确定在尝试创建广告之前正确设置了广告集 ID?
-
这就是 api 返回的内容。我回显了广告集 ID 以确保它正在创建它,并且它似乎输出了它。下面是错误致命错误:未捕获的异常“异常”,带有消息“需要父 ID”。在 /.../src/FacebookAds/Object/AbstractCrudObject.php:125 堆栈跟踪:
-
你能分享更多你的代码吗?我想知道您是否或如何设置 Ads SDK。例如,您是否在调用 Api::init($app_id, $app_secret, $access_token);和 $api = Api::instance();根据文档? github.com/facebook/facebook-php-ads-sdk
-
是的,我正在初始化 api...就像我说的,当我删除最后一段代码(广告组)时,它会创建没有广告的广告集。
-
在您设置广告集 ID 的地方执行
$ad = new AdGroup();之后,我看不到任何地方 - 您是否错过了? (campaign_id是必填字段(并且是广告组 ID,但由于遗留原因而命名为campaign_id)):developers.facebook.com/docs/marketing-api/adgroup/…
标签: facebook facebook-sdk-4.0 facebook-ads-api