Создание рекламы на Facebook API, получая код ошибки 1885833 - PullRequest
0 голосов
/ 11 сентября 2018

При попытке создать рекламное объявление на 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',
)  

1 Ответ

0 голосов
/ 11 сентября 2018

Нашли это решение в посте на Facebook

= Срочные изменения: реклама событий, реклама ссылок, не связанная с действительной страницей =

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

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

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

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

Неудачные опции

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

Вы по-прежнему можете создавать рекламу событий и рекламу ссылок, если вы предоставляете действительные 'actor_id' в рекламном объявлении '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/=breaking-change:-event-ads-link/1469189583195436/

EDIT ----

В конце концов, я заработал, это была комбинация проблем. Основная проблема заключалась в том, что рекламное объявление было настроено так, как было запрещено, документы в Facebook не соответствуют тому, что вам разрешено делать. Так что это мой рабочий adcreative в 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,
    ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...