代码之家  ›  专栏  ›  技术社区  ›  Stacy Thompson

脸书广告API错误

  •  5
  • Stacy Thompson  · 技术社区  · 7 年前

    不推荐使用$parent\u id作为构造函数的参数,请尽量不要在新代码中使用它。

    我用来创造创意的代码是:

        $link_data = new AdCreativeLinkData();
    $link_data->setData(array(
      AdCreativeLinkDataFields::MESSAGE => 'Product Description',
      AdCreativeLinkDataFields::LINK => $url_of_website,
      AdCreativeLinkDataFields::IMAGE_HASH => $image->hash,
      AdCreativeLinkDataFields::DESCRIPTION => 'Link Description',
      AdCreativeLinkDataFields::CALL_TO_ACTION => array(
        'type' => AdCreativeCallToActionTypeValues::LEARN_MORE,
        'value' => array(
          'link_title' => 'View Similar Products Now!',
          'lead_gen_form_id' =>  $form_id,
        ),
      ),
    ));
    
    $story = new AdCreativeObjectStorySpec();
    $story->setData(array(
      AdCreativeObjectStorySpecFields::PAGE_ID => $page_id,
      AdCreativeObjectStorySpecFields::LINK_DATA => $link_data,
    ));
    
    $creative = new AdCreative(null, $account_id);
    $creative->setData(array(
      AdCreativeFields::NAME => $nm,
      AdCreativeFields::OBJECT_STORY_SPEC => $story,
      AdCreativeFields::URL_TAGS => 'product=' . $p_id,
    ));
    
    $creative->create();
    

    我在此声明中没有看到任何家长id。请帮忙

    3 回复  |  直到 7 年前
        1
  •  5
  •   Prince Adeyemi    7 年前

    $parent\u id已弃用

    issue# 314

    来自的响应 Facebook开发者

    use FacebookAds\Object\AdCreative;
    use FacebookAds\Object\AdCreativeLinkData;
    use FacebookAds\Object\Fields\AdCreativeLinkDataFields;
    use FacebookAds\Object\AdCreativeObjectStorySpec;
    use FacebookAds\Object\Fields\AdCreativeObjectStorySpecFields;
    use FacebookAds\Object\Fields\AdCreativeFields;
    
    $link_data = new AdCreativeLinkData();
    $link_data->setData(array(
      AdCreativeLinkDataFields::MESSAGE => 'try it out',
      AdCreativeLinkDataFields::LINK => '<URL>',
      AdCreativeLinkDataFields::IMAGE_HASH => '<IMAGE_HASH>',
    ));
    
    $object_story_spec = new AdCreativeObjectStorySpec();
    $object_story_spec->setData(array(
      AdCreativeObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
      AdCreativeObjectStorySpecFields::LINK_DATA => $link_data,
    ));
    
    $creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');
    
    $creative->setData(array(
      AdCreativeFields::NAME => 'Sample Creative',
      AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
    ));
    
    $creative->create();
    
    希望这有帮助。
        2
  •  0
  •   mx0 aleclara95    6 年前

    setParentId($parrent_id) .

    示例代码:

    $product_catalog = new ProductCatalog();
    $product_catalog->setParentId($parrent_id);
    $product_catalog->setData(
                [
                    ProductCatalogFields::NAME => "Testjon Autojon Catalog",
                    ProductCatalogFields::VERTICAL => "vehicles",
                ]
    );
    $product_catalog->create();
    
        3
  •  0
  •   Gayan    4 年前

    我发现即使在 here ,这是使用 $parent_id

    在该示例中,第二个参数传递给In AdCreative() 仍然是 $parent\u id .

    $creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');
    

    为了清楚起见,以下提到的是 \FacebookAds\Object\AbstractCrudObject \FacebookAds\Object\AdCreative 是从和扩展而来的,您可以在那里看到弃用通知。

      /**
       * @deprecated deprecate constructor with null and parent_id
       * @param string $id Optional (do not set for new objects)
       * @param string $parent_id Optional, needed for creating new objects.
       * @param Api $api The Api instance this object should use to make calls
       */
      public function __construct($id = null, $parent_id = null, Api $api = null) {
        parent::__construct();
        //...
      }
    

    require __DIR__ . '/vendor/autoload.php';
    
    use FacebookAds\Api;
    use FacebookAds\Logger\CurlLogger;
    use FacebookAds\Object\AdAccount;
    
    $access_token = '<ACCESS_TOKEN>';
    $app_secret = '<APP_SECRET>';
    $app_id = '<APP_ID>';
    $id = '<AD_ACCOUNT_ID>';
    
    $api = Api::init($app_id, $app_secret, $access_token);
    $api->setLogger(new CurlLogger());
    
    $fields = array();
    $params = array(
        'name' => 'Sample Creative',
        'object_story_spec' => ['page_id' => '<pageID>',
            'video_data' => ['IMAGE_URL' => '<imageURL>',
                'video_id' => '<videoID>',
                'call_to_action' => ['type' => 'LIKE_PAGE',
                    'value' => ['page' => '<pageID>']
                ]
            ]
        ],
    );
    $adCreative = (new AdAccount($id))->createAdCreative($fields, $params);
    
    echo json_encode($adCreative->exportAllData(), JSON_PRETTY_PRINT);
    

    我找到了这个例子 here . 请注意,尽管本文档的标题是“创建广告视频创意”,但它实际上展示了如何创建广告创意。脸书营销API参考中有许多不一致之处,就是这样:)