🛑 Главная ловушка Meta*: Контексты
Meta* жестко разделяет Личные приложения (привязанные к странице разработчика) и Бизнес-приложения (привязанные к Meta* Business Manager / Business Portfolio).
Если вы создаете приложение из-под бизнес-аккаунта клиента или компании, оно не будет отображаться в вашем стандартном выпадающем списке на developers.facebook.com и в Graph API Explorer, пока вы не добавите свой личный аккаунт в Роли этого приложения или не переключите фильтр на конкретное бизнес-портфолио.
Никогда не используйте временные токены из Graph API Explorer в боевых воркфлоу n8n: они живут от 1 до 60 дней. Для стабильной работы нужен System User внутри Business Manager.
📋 Шаг 0. Пре-требования: Подготовка аккаунтов (Чек-лист для владельца)
Прежде чем инженер начнет создавать приложение и генерировать токены в n8n, владелец бизнеса или администратор обязан подготовить активы:
| № | Актив | Что необходимо настроить |
|---|---|---|
| 1 | Личный профиль FB* с 2FA | Аккаунт администратора должен быть реальным, без ограничений и банов, и на нем обязана быть включена двухфакторная аутентификация (2FA). Без 2FA Meta* блокирует доступ к функциям разработчика. |
| 2 | Meta* Business Manager | Создано Бизнес-портфолио компании на business.facebook.com. |
| 3 | Публичная страница Facebook* | Создана Страница компании (не личный профиль и не закрытая группа) и добавлена в активы (Настройки бизнеса / Аккаунты / Страницы). |
| 4 | Instagram* в Бизнес-режиме | Личный аккаунт Instagram* переключен на Бизнес или Авторский (В приложении Instagram*: Настройки / Тип аккаунта / Переключиться на профессиональный). |
| 5 | Связка FB* + Instagram* | Критически важно: зайти в Meta* Business Suite / Настройки / Бизнес-активы / Аккаунты Instagram*. Нажать «Добавить аккаунт Instagram*», пройти авторизацию и связать его со Страницей Facebook*. Без этой физической связки Graph API не увидит Instagram* ID. |
⚙️ Шаг 1. Правильное создание приложения Meta*
- Переходим на портал developers.facebook.com.
- Нажимаем Создать приложение (Create App).
- ⚠️ Важно: На первом шаге выбора сценария спускаемся в самый низ и выбираем тип Другое (Other).
- На следующем шаге выбираем тип Бизнес (Business) (для работы с Instagram* Graph API и страницами компаний).
- В панели управления созданного приложения добавляем продукты: Facebook* Login for Business и Instagram* Graph API.
🔑 Шаг 2. Получение «вечного» токена (System User)
Токены, сгенерированные через стандартный Graph API Explorer, «сгорают» максимум через 60 дней. Чтобы ваши n8n-воркфлоу не останавливались ночью из-за невалидной авторизации, создается Системный пользователь:
- Заходим в Meta* Business Suite / Настройки компании (шестеренка) / Системные пользователи (System Users).
- Нажимаем Добавить и создаем пользователя с ролью Администратор (Admin).
- Выбираем созданного системного пользователя и нажимаем Подключить объекты (Assign Assets).
- Обязательно выдаем ему полный доступ (управление) к трем объектам:
- вашему Приложению;
- нужной Публичной странице Facebook*;
- подключенному Аккаунту Instagram*.
- Нажимаем кнопку Сгенерировать новый токен (Generate New Token).
- В появившемся окне выбираем созданное приложение и отмечаем галочками необходимые права (Scopes):
pages_manage_posts- публикация и управление постами на странице Facebook*;pages_read_engagement- чтение реакций и охватов;instagram_basic- базовый доступ к профилю Instagram*;instagram_content_publish- прямая публикация фото, каруселей и Reels;business_management- управление связанными бизнес-активами.
- Копируем полученный длинный токен (System User Access Token). Этот токен не имеет срока давности и сохраняется в переменные окружения n8n.
Создание отказоустойчивых контентных фабрик требует четкой архитектуры очередей, обработки ошибок и мониторинга квот Meta* API. Если вам нужно внедрить надежный автопостинг или AI-агентов в ваш проект - пишите: @websansay. Свежие разборы n8n-пайплайнов доступны в Telegram-канале хаба.
📘 Шаг 3. Публикация в Facebook* через n8n
Для публикации на публичной странице Facebook* исходный токен системного пользователя напрямую не используется: по архитектуре Meta* его нужно обменять на Маркер Страницы (Page Access Token).
1. Получаем Маркер Страницы (GET запрос)
GET https://graph.facebook.com/v25.0/{PAGE_ID}?fields=access_token&access_token={ТОКЕН_СИСТЕМНОГО_ПОЛЬЗОВАТЕЛЯ}
В ответе берем поле access_token - это Page Access Token, который используется для отправки постов от имени страницы.
2. Публикуем пост с картинкой в Facebook* (POST запрос)
curl -X POST "https://graph.facebook.com/v25.0/{PAGE_ID}/photos" \
-H "Content-Type: application/json" \
-d '{
"url": "https://cdn.domain.com/image.jpg",
"caption": "Текст вашего поста",
"access_token": "{МАРКЕР_СТРАНИЦЫ}"
}'
В n8n: создается нода HTTP Request с методом POST, URL https://graph.facebook.com/v25.0/{{ $json.page_id }}/photos и JSON-телом, содержащим прямую ссылку на медиафайл и текст публикации.
📸 Шаг 4. Публикация в Instagram* через n8n
Instagram* Graph API использует исходный токен Системного пользователя и публикует медиа в два обязательных этапа через асинхронные медиа-контейнеры.
1. Узнаем Instagram* Business Account ID (GET)
GET https://graph.facebook.com/v25.0/{PAGE_ID}?fields=instagram_business_account&access_token={ТОКЕН_СИСТЕМНОГО_ПОЛЬЗОВАТЕЛЯ}
Из ответа берем идентификатор из объекта instagram_business_account.id.
2. Создаем медиа-контейнер (POST)
Картинка или видео должны быть доступны по прямой публичной HTTPS-ссылке без авторизации и HTML-оберток (например, S3-хранилище, CDN или GitHub Raw).
curl -X POST "https://graph.facebook.com/v25.0/{INSTAGRAM_ID}/media" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://cdn.domain.com/image.jpg",
"caption": "Текст поста для Instagram*",
"access_token": "{ТОКЕН_СИСТЕМНОГО_ПОЛЬЗОВАТЕЛЯ}"
}'
В ответе Meta* возвращает { "id": "178414..." } - это идентификатор контейнера (creation_id).
3. Публикуем контейнер в ленту (POST)
curl -X POST "https://graph.facebook.com/v25.0/{INSTAGRAM_ID}/media_publish" \
-H "Content-Type: application/json" \
-d '{
"creation_id": "{ВАШ_CREATION_ID}",
"access_token": "{ТОКЕН_СИСТЕМНОГО_ПОЛЬЗОВАТЕЛЯ}"
}'
В сценарии n8n первая HTTP-нода отправляет запрос на создание контейнера, а следующая нода принимает полученный {{ $json.id }} и сразу триггерит публикацию через эндпоинт /media_publish. Для видео и Reels между шагами рекомендуется добавить ноду Wait (3-10 секунд) для завершения транскодирования на серверах Instagram*.
👻 Шаг 5. Почему никто не видит мои посты? (Эффект Песочницы)
Частая проблема: скрипт или воркфлоу n8n отработал с кодом 200, пост появился в ленте у разработчика, но с других аккаунтов страница выглядит пустой.
Причина: приложение находится в режиме разработки (Development Mode). В этом статусе весь контент, опубликованный через API, виден исключительно администраторам страницы и пользователям, добавленным в раздел «Роли» внутри приложения Meta*.
Как перевести приложение в рабочий режим (Live Mode):
- В панели управления приложением перейдите в Настройки / Основное (Basic Settings).
- Обязательно укажите действительную ссылку на Политику конфиденциальности (Privacy Policy URL) и категорию бизнеса.
- Переключите главный тумблер в верхней шапке из положения «В разработке (Development)» в положение «В эфире (Live Mode)».
Если вы используете приложение только для публикации на страницах и в аккаунтах Instagram* внутри собственного Business Manager (принадлежащих вашей компании или клиенту), проходить долгую и сложную модерацию App Review от Meta* не нужно. Права уровня Business Asset действуют в Live-режиме без дополнительной проверки.
