При попытке создать рекламный файл на facebook с помощью api 3.1 я получал эту ошибку:

[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',
)  
5
Marcus 11 Сен 2018 в 12:54

1 ответ

Лучший ответ

Нашел это решение в сообщении на странице Facebook

= Критическое изменение: реклама мероприятий, реклама со ссылками, не связанная с действующей страницей =

Недавно мы объявили об инициативе сделать платформу рекламы Facebook более прозрачной для пользователей Facebook. Подробнее об этом читайте в

Чтобы поддержать эту инициативу, мы отказываемся от рекламы событий и рекламы со ссылками, которые не связаны с действующей страницей из Marketing API.

Это критическое изменение затрагивает все поддерживаемые версии API, включая предстоящую версию Marketing API v2.11, v2.10 и v2.9, которые доступны, но будут исключены. Это критическое изменение вступит в силу 6 ноября 2017 г.

В результате этого критического изменения вы больше не сможете создавать или редактировать объявления о мероприятиях и объявления со ссылками, которые не связаны с действующей страницей. Запросы на это вернут ошибку: «Код ошибки :: ADPRO2__AD_MUST_HAVE_PAGE (1885833)».

Неудачные варианты

Следующие параметры рекламы, используемые вместе, не будут работать: === Объявления о событиях === - Цель: 'EVENT_RESPONSES' - Поля объявлений: 'body, object_id' === Связать объявления === - Цель: 'LINK_CLICKS' - Поля объявлений: 'title', 'body', 'object_url', содержащий 'image_file' или 'image_hash'

Вы по-прежнему можете создавать рекламные объявления о событиях и рекламные объявления со связями, если вы укажете действительный идентификатор исполнителя в полях object_story_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 / = break-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,
    ]);
5
Marcus 4 Дек 2018 в 06:25