无法通过 Ads API 创建 Facebook 广告

Posted

技术标签:

【中文标题】无法通过 Ads API 创建 Facebook 广告【英文标题】:Cant Create Facebook Ad via Ads API 【发布时间】: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/… 【参考方案1】:

您在创建广告组时缺少父 ID 参数。第二个参数应该是您要在下面创建此广告组的帐户 ID:

$adgroup = new Adgroup(null, $accountId);

如果您是从文档中复制的,请告诉我,我们可以更新。

【讨论】:

【参考方案2】:

您可以参考最新的文档:https://developers.facebook.com/docs/marketing-api/reference/ad-campaign

从那里,您需要指定广告帐户 ID(AD_ACCOUNT_ID)和广告活动 ID(CAMPAIGN_GROUP_ID)

【讨论】:

以上是关于无法通过 Ads API 创建 Facebook 广告的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Ads Insights API - 请求网站URL参数

无法通过 Graph API 将提要发布到 Facebook 页面

Android 中的 AdMob Facebook 中介无法正常工作

在 facebook http graph api 上创建应用程序请求的问题

如何在 IOS 中使用 FB SDK 创建 Facebook 应用广告

无法通过 Facebook Graph API 获取 Instagram 企业帐户 ID