【问题标题】:Cannot create Ad Set using Facebook Business SDK无法使用 Facebook Business SDK 创建广告集
【发布时间】:2020-04-27 02:48:52
【问题描述】:

我们正在使用 Laravel 5.7、PHP 7.1 和 XAMPP 3.2.2 我们希望使用 PHP 业务 SDK 和营销 API 创建 Facebook 营销活动。

通过以下源码成功创建活动

/* Start Campaign*/
$fields = array(
);
$params = array(
    'name' => $request->campaign_name,
    'objective' => 'LINK_CLICKS',
    'status' => 'PAUSED',
);
$campaignData = ((new AdAccount($account_id))->createCampaign(
    $fields,
    $params
)->exportAllData());
/* End Campaign*/

这个,我尝试为 AdSet 编写源代码,但出现以下错误 “$parent_id 作为构造函数的参数已被弃用,请尽量不要在新代码中使用它。” 在下面一行

$adset = new AdSet(null, $account_id);

您将在下面找到我创建 AdSet 的所有源代码

$start_time = (new DateTime("+1 week"))->format(DateTime::ISO8601);
$end_time = (new DateTime("+2 week"))->format(DateTime::ISO8601);

$adset = new AdSet(null,$account_id);
$adset->setData(array(
        AdSetFields::NAME => 'My Ad Set',
        AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
        AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
        AdSetFields::BID_AMOUNT => 2,
        AdSetFields::DAILY_BUDGET => 1000,
        AdSetFields::CAMPAIGN_ID => $campaignData['id'],
  AdSetFields::TARGETING => $targeting,
  AdSetFields::START_TIME => $start_time,
  AdSetFields::END_TIME => $end_time,
));
$adset->create(array(
    AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));

试图解决我遇到的问题,我修改了以下内容

$adset = new AdSet(null, $account_id);

$adset = new AdSet($account_id);

而我的新源代码如下。

$adset = new AdSet($account_id);
$adset->setData(array(
        AdSetFields::NAME => 'My Ad Set',
        AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
        AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
        AdSetFields::BID_AMOUNT => 2,
        AdSetFields::DAILY_BUDGET => 1000,
        AdSetFields::CAMPAIGN_ID => $campaignData['id'],
  AdSetFields::TARGETING => $targeting,
  AdSetFields::START_TIME => $start_time,
  AdSetFields::END_TIME => $end_time,
));
$adset->create(array(
    AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));

现在我在下一行收到错误“对象已经有一个 ID”

$adset->create(array(

你能帮我看看发生了什么以及我在哪里犯了错误吗?

【问题讨论】:

    标签: php laravel-5.7 facebook-marketing-api facebook-business-sdk


    【解决方案1】:

    您收到“对象已经有一个 ID”错误,因为 constructor 是广告集 ID,因此保存方法会立即失败。

    “$parent_id 作为构造函数的参数已被弃用”只是最新 ​​sdk 中的一个警告,因此您可以出于演示目的忽略它。

    我建议尝试创建没有任何目标的广告集并调用 validate。还要捕获请求异常并转储正文以获取有关请求失败原因的详细说明。

    use FacebookAds\Http\Exception\RequestException;
    
    $adset = new AdSet(null, 'act_xxx');
    $adset->setData([
            AdSetFields::NAME => 'Demo Ad Set',
            AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::REACH,
            AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
            AdSetFields::BID_AMOUNT => 2,
            AdSetFields::DAILY_BUDGET => 1000,
            AdSetFields::CAMPAIGN_ID => $facebookCampaignId
        ]);
    
        try {
            $adset->validate([AdSet::STATUS_PARAM_NAME => AdSet::STATUS_ACTIVE]);
        } catch (RequestException $e) {
            // Super helpful debugging information
            $response = json_decode($e->getResponse()->getBody(), true);
            var_dump($response);
        }
    

    【讨论】:

      猜你喜欢
      • 2019-01-20
      • 2015-10-25
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多