Часть I — Создание приложения в Meta для разработчиков
Бизнес-портфолио и приложение
Если у вас ещё нет бизнес-аккаунта (портфолио) — создайте его. Это «контейнер» для всех активов: страниц Facebook, аккаунтов Instagram, приложений и системных пользователей.
Создать бизнес-портфолио
- Перейдите на business.facebook.com/overview.
- Нажмите Создать аккаунт.
- Введите: название бизнеса, имя и фамилию владельца, рабочий email.
- Нажмите Отправить и подтвердите.
После этого появится ваш бизнес-портфель с уникальным ID.
Создать приложение
- Перейдите на developers.facebook.com/apps.
- Войдите под той же учётной записью Meta.
- В правом верхнем углу: Мои приложения → Создать приложение.
- Выберите тип приложения: Бизнес.
- Заполните: название, email разработчика, выберите свой бизнес-аккаунт.
- Нажмите Создать приложение.
Базовые настройки приложения
- В меню слева выберите Настройки → Основные.
- Проверьте, что у вас есть:
- Идентификатор приложения (App ID);
- Секрет приложения (App Secret);
- URL сайта (Website URL).
Когда указывать URL сайта обязательно
- Серверное приложение (хостинг на Vercel, AWS, Render и т. д.).
- Используется авторизация: Facebook Login, OAuth или Redirect URI.
- Приложение автоматически публикует посты, получает токены или обменивается данными с API.
Когда можно не указывать
- Приложение используется только для генерации системного токена вручную.
- Работаете через Business Manager и публикуете напрямую через токен, без сервера.
💡 Даже для внутренних задач — указание рабочего URL повышает доверие со стороны Meta и может предотвратить технические ограничения в будущем.
Памятка: как создать сайт на Vercel для приложения Meta
Краткая инструкция, как развернуть тестовый или рабочий сайт на Vercel и использовать его как технический домен для приложения Meta.
1. Регистрация и вход
- Перейдите на vercel.com.
- Войдите через GitHub, GitLab или Email.
- Окажетесь в личной панели управления Vercel.
2. Создание проекта
- New Project → Add New….
- Выберите репозиторий из GitHub или создайте вручную (Import Project Manually).
- Введите имя проекта, например: insta-auth-server.
- Нажмите Deploy. Через несколько секунд сайт опубликован.
Пример адреса: https://insta-auth-server.vercel.app/
3. Переменные окружения
- Откройте проект → Settings → Environment Variables.
- Добавьте переменные:
- FB_APP_ID — идентификатор приложения из Meta Developers.
- FB_APP_SECRET — секрет приложения.
4. Указание URL в Meta Developers
- Meta Developers → Настройки приложения → Основное.
- Найдите раздел Веб-сайт (Website URL).
- Вставьте адрес: https://<ваш-проект>.vercel.app/
- Нажмите Сохранить изменения.
5. Проверка
Перейдите по адресу проекта. Если открывается страница (даже простая «Hello World») — сайт развёрнут. Этот URL можно использовать как доверенный домен в Meta Developers, для API-запросов и токенов.
Добавление продуктов
- В панели приложения выберите Добавить сценарии использования.
- В списке выберите: «Управление сообщениями и контентом в Instagram» — этот сценарий автоматически подключает Instagram Graph API и нужные разрешения.
- Нажмите Настроить и пройдите шаги персонализации.
- В мастере появятся шаги:
- Добавить разрешения: instagram_business_basic, instagram_manage_comments, instagram_business_manage_messages;
- Сгенерировать токен и добавить тестировщиков.
⚠ Это короткоживущий токен — только для ручного тестирования через Graph API Explorer. Можно продлить до 60 дней через endpoint exchange_token.
👉 Эти шаги можно пропустить, если работаете через Business Manager (см. Часть II). Важно только активировать сценарий, чтобы он отображался в списке.
Если получаете токен по Части II:
- Системный пользователь и системный токен заменяют тестировщиков;
- Разрешения выдаются при генерации токена в бизнес-портфолио;
- Токен генерируется не здесь, а в Системные пользователи → Business Manager.
Такой токен даёт права на публикацию от имени связанного Instagram Business Account без участия «тестировщика» и без входа через Facebook Login. Срок — 60 дней или дольше (до ручного отзыва).
- Убедитесь, что сценарий отображается как активный — это значит, Instagram Graph API подключён.
- При необходимости добавьте сценарий Вход через Facebook (нужен для user-токенов, для системного доступа не обязателен).
Управление ролями приложения
- В меню выберите Роли → Роли приложения.
- Убедитесь, что вы Администратор.
- При необходимости добавьте других пользователей: разработчиков, тестировщиков.
Привязка приложения к бизнес-портфолио
- Перейдите на business.facebook.com/settings.
- В меню слева: Аккаунты → Приложения.
- Нажмите Добавить → Добавить приложение.
- Введите App ID и подтвердите.
Связка страницы Facebook с Instagram
- Перейдите на business.facebook.com/settings.
- Откройте Аккаунты → Страницы — убедитесь, что нужная страница есть.
- Откройте Аккаунты → Аккаунты Instagram — убедитесь, что Instagram привязан.
- Если нет — добавьте через Центр аккаунтов → Аккаунты и профили.
Часть II — Системный токен через Business Manager
Создание системного пользователя
- В меню слева: Пользователи → Системные пользователи.
- Нажмите Добавить.
- Введите имя (например, Test_autopost), выберите тип доступа: Полный контроль.
- Сохраните.
Назначение объектов
- В карточке системного пользователя выберите Назначенные объекты.
- Нажмите Подключить объекты.
- Добавьте: Страницу, Instagram, Приложение.
- Для всех выберите Полный контроль.
Генерация системного токена
- В карточке системного пользователя нажмите Сгенерировать маркер.
- Выберите приложение.
- Отметьте разрешения:
- instagram_basic
- instagram_content_publish
- instagram_manage_insights
- pages_read_engagement
- pages_show_list
- business_management
- Скопируйте токен и сохраните в надёжном месте.
Сравнение токенов: пользовательский vs системный
| Параметр | User Access Token (короткий) | System User Token (системный) |
|---|---|---|
| Где создаётся | Мастер сценария Meta Developers или Graph API Explorer | Business Manager → Пользователи → Системные пользователи |
| Для кого | Конкретный пользователь Instagram/Facebook | Системный пользователь бизнес-аккаунта |
| Срок действия | ~1 час (продлевается до 60 дней) | Долгосрочный, до ручного отзыва |
| Авторизация пользователя | Да, через Facebook Login | Не нужна — достаточно прав системного пользователя |
| Привязка к паролю | Да — истекает при смене пароля | Нет |
| Права | Ограниченные, только для тестов | Полные — для бизнес-активов |
| Использование | Ручные тесты, отладка API | Автоматизация публикаций, серверные интеграции |
| Продление | Через Graph API endpoint exchange_token | Не требуется (до ручного отзыва) |
💡 Вывод: токен из мастера сценария (User Access Token) — только для тестирования. Для рабочих интеграций и автопостинга используйте системный токен (System User Token), созданный в Business Manager.
Часть III — Публикация в Instagram через Graph API
Получение Instagram Business ID
- Убедитесь, что Instagram-аккаунт подключён к странице Facebook через Центр аккаунтов.
- В Business Manager: Аккаунты → Аккаунты Instagram — скопируйте ID (начинается с 1784…).
- Если ID не виден — запросите через Graph API:
curl -X GET "https://graph.facebook.com/v21.0/{PAGE_ID}?fields=connected_instagram_account{id,username}&access_token={ACCESS_TOKEN}"
В ответе:
"connected_instagram_account": {
"id": "17841477721935556",
"username": "ваше_имя_в_Instagram"
}
Создание контейнера публикации
Первый шаг к публикации — создание временного объекта (контейнера) с изображением и подписью.
curl -X POST \
"https://graph.facebook.com/v21.0/{IG_BUSINESS_ID}/media" \
-F "image_url=https://example.com/image.jpg" \
-F "caption=Тестовая публикация 🚀" \
-F "access_token={ACCESS_TOKEN}"
В ответе:
{ "id": "CREATION_ID" }
Проверка статуса контейнера (необязательно)
Можно убедиться, что изображение загружено и готово к публикации:
curl -X GET \
"https://graph.facebook.com/v21.0/{CREATION_ID}?fields=status_code&access_token={ACCESS_TOKEN}"
Ожидаемый ответ: { "status_code": "FINISHED" }
Публикация поста
Опубликуйте загруженный контейнер:
curl -X POST \
"https://graph.facebook.com/v21.0/{IG_BUSINESS_ID}/media_publish" \
-F "creation_id={CREATION_ID}" \
-F "access_token={ACCESS_TOKEN}"
В ответе: { "id": "PUBLISHED_MEDIA_ID" } — ID опубликованного поста.
Получение ссылки на пост
curl -X GET \
"https://graph.facebook.com/v21.0/{PUBLISHED_MEDIA_ID}?fields=permalink,caption,timestamp&access_token={ACCESS_TOKEN}"
Пример ответа:
{
"permalink": "https://www.instagram.com/p/ABC123xyz/",
"caption": "Тестовая публикация 🚀",
"timestamp": "2025-11-12T09:00:00+0000"
}
★ Где выполнять запросы: Graph API Explorer vs Терминал
| Задача | Где удобнее | Почему |
|---|---|---|
| Проверить поля/права, увидеть структуру ответа | Graph API Explorer | Удобный интерфейс, автоподстановка версий API |
| Проверить токен (/debug_token) | Graph API Explorer | Быстро выбрать токен и увидеть ошибки OAuth |
| Создать контейнер медиа (публикация) | Терминал / Postman | Explorer не поддерживает multipart/form-data |
| Проверить статус контейнера / получить permalink | Оба варианта | GET-запросы удобны и там, и там |
| Массовые или регулярные публикации | Сервер / Терминал | Автоматизация, логирование, повторные запросы (cron, Node.js, Python, PHP) |
| Тестировать версии API и поля | Graph API Explorer | Быстрая смена версии API, подсказки по полям |
💡 Рекомендация:
- Graph API Explorer — для проверки токенов и отладки GET-запросов.
- Терминал или сервер (cURL/Postman) — для публикаций и автоматизации.
- Всегда используйте актуальную версию API (например, v21.0).