Рекламные объявления Facebook Marketing API

У меня есть приложение facebook с утвержденными разрешениями ads_read, manage_pagesads_management, business_management и Ads Management Standard Access.
Я могу создать рекламную кампанию, набор объявлений и загрузить актив в Facebook через Facebook Marketing API.

Но когда я пытаюсь создать объявление с запросом /adcreatives, я получаю сообщение об ошибке:

(#3) Application does not have the capability to make this API call.

Пример запроса curl:

curl -X POST \
  'https://graph.facebook.com/v3.3/act_<account_id>/adcreatives?access_token=<access_token_here>' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Host: graph.facebook.com' \
  -d 'call_to_action_type=USE_APP&actor_id=<page_id>&object_type=APPLICATION&status=active&name=hello&title=foo&page_id=<page_id>&id=act_<account id>&image_hash=fb1a69e0965076e791183ac82c9f7417'

Я пробовал делать запросы с токеном приложения, токеном страницы и токеном пользователя (что было разрешено в FB Business manager).
Я также пробовал с учетной записью песочницы и ее токеном
Каждая служба (приложение, страница facebook и пользователь) связана с бизнес-аккаунтом в бизнес-менеджере и имеет права администратора (максимально).

Я пытался отправить данные в теле с запросом JSON, я пытался отправить данные как x-www-form-urlencoded.
Я пробовал использовать простые http-запросы и пробовал с facebook-nodejs-бизнес-SDK
Но все равно безуспешно.

Итак, вопрос, каков правильный запрос на создание объявления AD и какие разрешения нужны моему приложению для выполнения такой задачи?

P.S. Я также задал несколько вопросов на форуме разработчиков Facebook и не получил решения. q1, д2, д3

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
0
1 570
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что ваш ввод искажен (хотя возвращаемые ошибки из FB обычно никогда не указывают на это).

Основная проблема, которую я вижу, заключается в том, что информация о креативе не передается через параметр object_story_spec. Через этот объект передается тип креатива, который вы создаете, вместе с необходимыми параметрами, которые в вашем случае будут photo_data.

curl -X POST \
  'https://graph.facebook.com/v3.3/act_<ACT_ID>/adcreatives?access_token=<TOKEN>' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Host: graph.facebook.com' \
  -d 'link_url=<URL>&name=<CREATIVE_NAME>&object_type=PAGE&object_story_spec = {page_id:<PAGE_ID>,photo_data:{image_hash:<HASH>,caption:<CAPTION>}}'

Вам, вероятно, потребуется добавить или удалить параметры по мере необходимости, но приведенный выше запрос сработал для меня.

Что касается разрешений, вот что у меня было:

Некоторые дополнительные ссылки:
Креативное объявление
Спецификация истории объекта
Фотоданные

Спасибо за ответ. Я последовал вашему совету, и теперь проблема в том, что я получаю идентификатор объявления от Facebook, но не могу найти его на странице Facebook или в Ads Manager. Знаете ли вы, где Facebook хранит рекламные креативы?

Grynets 03.06.2019 22:48

Facebook не позволяет просматривать креатив в пользовательском интерфейсе, если он не прикреплен к объявлению. Вам нужно будет передать этот идентификатор объявления в параметры при создании объявления.

Abundance 03.06.2019 22:54

Но если вы хотите предварительно просмотреть его не в менеджере объявлений, вы можете использовать конечную точку создания предварительного просмотра в API: Developers.facebook.com/docs/marketing-api/generatepreview/v‌​3.3.

Abundance 03.06.2019 22:55

Большое спасибо. Я чувствую, что с вашей помощью приближаюсь к финишу. Не возражаете, если я задам еще один вопрос? Похоже, я успешно создал рекламный креатив и теперь пытаюсь загрузить рекламу. Поля: {name, campaign_id, adset_id, creative: {creative_id}, status}. Проблема в том, что я получаю сообщение об ошибке > «URL-адрес хранилища объектов не соответствует рекламируемому объекту: убедитесь, что URL-адрес хранилища объектов, связанный с вашим рекламным объявлением, совпадает с URL-адресом хранилища объектов, установленным для продвигаемого объекта». ; Тем не менее, при создании набора объявлений и создании объявления я упоминаю один и тот же object_store_url.

Grynets 03.06.2019 23:09

Может быть, лучше задать отдельный вопрос, не зная, какие параметры вы передаете при создании объявления. Вы используете формат link_data или photo_data? Вы также должны проходить только один из object_story_spec или object_url.

Abundance 04.06.2019 16:07

Вот мой второй вопрос stackoverflow.com/questions/56446925/… Буду очень благодарен если поможете :)

Grynets 04.06.2019 17:26

Другие вопросы по теме