在Facebook API上创建广告获取错误_子代码1885833

时间:2018-09-11 09:54:04

标签: php laravel facebook facebook-graph-api

当尝试使用api 3.1在Facebook上创建广告时,出现此错误:

[2018-09-10 10:45:47] local.INFO: array (
  'message' => 'Invalid parameter',
  'type' => 'OAuthException',
  'code' => 100,
  'error_subcode' => 1885833,
  'is_transient' => false,
  'error_user_title' => 'Ad Must Be Associated With a Facebook Page',
  'error_user_msg' => 'Ads and ad creatives must be associated with a Facebook Page. Try connecting your ad or ad creative to a Page and resubmit your ad.',
  'fbtrace_id' => 'FUMJg2Q2z1e',
)  

1 个答案:

答案 0 :(得分:5)

在Facebook页面帖子上找到了该解决方案

  

=重大变化:事件广告,链接广告未与有效页面相关联

     

我们最近宣布了一项举措,以制作Facebook广告   平台对Facebook用户更加透明。进一步了解此内容

     

为支持该计划,我们不建议使用事件广告和链接广告   没有从Marketing API连接到有效页面的页面。

     

此重大更改会影响所有受支持的API版本,包括   即将推出的Marketing API版本v2.11,v2.10和v2.9   可用,但将不推荐使用。这一重大变化将需要   从2017年11月6日起生效。

     

此重大更改的结果是,您将不再能够   创建或编辑未连接到广告的事件广告和链接广告   有效页面。这样做的请求将返回错误:   'ErrorCode :: ADPRO2__AD_MUST_HAVE_PAGE(1885833)'。

失败选项

  

以下广告选项一起使用将失败:   ===活动广告===   -目标:“ EVENT_RESPONSES”   -广告素材字段:“ body,object_id”   ===链接广告===   -目标:“ LINK_CLICKS”   -广告素材字段:“标题”,“正文”,包含“ image_file”或“ image_hash”的“ object_url”

     

如果您提供有效的信息,您仍然可以创建事件广告和链接广告   广告素材的“ object_story_id”中的“ actor_id”或   “ object_story_spec”字段。

有效选项

  

这些选项一起使用是有效的:   ===活动广告===   -目标:“ EVENT_RESPONSES”   -广告素材字段:“ object_story_id”或“ object_story_spec”   ===链接广告===   -目标:“ LINK_CLICKS”   -广告素材字段:“ object_story_id”或“ object_story_spec”

链接来自:https://www.facebook.com/marketingdevelopers/posts/=breaking-change:-event-ads-link/1469189583195436/

编辑----

最终我使它工作了,这是各种问题的结合。主要的问题是,广告素材的设置方式不允许,facebook文档与您允许的操作不匹配。所以这是我在php中工作的乐趣

$data = file_get_contents($imageUrl);

$data = [
    'bytes'        => base64_encode($data),
    'access_token' => $this->accessToken,
];

$response = $this->client->request('POST',
    "act_{$accountId}/adimages", [
        'form_params' => $data,
    ]);

$response = $this->readStream($response)->images->bytes;

$link = (object)[
    'link' => $linkUrl,
];

$signUp = (object)[
    'type'  => "SIGN_UP",
    'value' => $link,
];

$linkData = (object)[
    'call_to_action' => $signUp,
    'link'           => $objectUrl,
    'image_hash'     => $response->hash,
    'message'        => $body,
];

$objectStory = (object)[
    'link_data' => $linkData,
    'page_id'   => $pageId,
];

$data = (object)[
    'name'              => 'system-generated-' . $accountId,
    'title'             => $title,
    'object_story_spec' => $objectStory,
    'access_token'      => $this->accessToken,
];

$response = $this->client->request('POST',
    "act_{$accountId}/adcreatives", [
        'form_params' => $data,
    ]);

这就是我制作实际广告的方式

$creative = (object)[
    'creative_id' => $creativeId,
];

$data = (object)[
    'name'         => $name,
    'creative'     => $creative,
    'adset_id'     => $adSetId,
    'status'       => "PAUSED",
    'access_token' => $this->accessToken,
];

$response = $this->client->request('POST',
    "act_{$accountId}/ads", [
        'form_params' => $data,
    ]);