Интеграция Instagram API в мобильное приложение
Instagram API в 2024 году — это два разных продукта с принципиально разными возможностями. Instagram Basic Display API (для личных аккаунтов) и Instagram Graph API (для бизнес-аккаунтов и авторов). Первый позволяет только читать медиа пользователя. Второй — публиковать контент, управлять комментариями, получать инсайты. Важно понять это до начала разработки, иначе в конце окажется, что нужный функционал недоступен для выбранного типа API.
Instagram Basic Display API
Подходит для сценария «войти через Instagram и показать свои фото».
Авторизация через OAuth:
https://api.instagram.com/oauth/authorize
?client_id=YOUR_APP_ID
&redirect_uri=yourapp://oauth
&scope=user_profile,user_media
&response_type=code
Получение медиа:
GET https://graph.instagram.com/me/media
?fields=id,caption,media_type,media_url,thumbnail_url,timestamp
&access_token=...
Пагинация через cursor из поля paging.cursors. Токен живёт 60 дней, после обновления через refresh_access_token endpoint.
Ограничения Basic Display API — нельзя публиковать, нельзя комментировать, нельзя получить followers. Только читать свой контент.
Instagram Graph API
Для публикации требуется бизнес-аккаунт Instagram, подключённый к Facebook Page, приложение в Facebook Developer Console с правами instagram_content_publish.
Публикация фото
Двухшаговый процесс:
- Создаём media container:
POST https://graph.facebook.com/v19.0/{ig-user-id}/media
?image_url=https://yourserver.com/photo.jpg
&caption=Подпись к посту #тег
&access_token=...
Ответ: { "id": "17889615814797203" } — ID контейнера.
- Публикуем контейнер:
POST https://graph.facebook.com/v19.0/{ig-user-id}/media_publish
?creation_id=17889615814797203
&access_token=...
Важно: фото должно быть доступно по публичному HTTPS URL. Instagram скачивает его на свои серверы. Нельзя загрузить файл напрямую — только URL. Поэтому архитектура: клиент загружает фото на ваш S3 → получает публичный URL → передаёт на сервер → сервер вызывает Graph API.
Публикация видео (Reels)
Тот же двухшаговый поток, но с media_type=REELS и video_url. После создания контейнера нужно дождаться обработки видео — статус проверяется через GET /{container-id}?fields=status_code.
Карусель (несколько фото)
Три шага: создать item-контейнер для каждого фото → создать carousel-контейнер с children=id1,id2,id3 → опубликовать.
Получение токена в мобильном приложении
Instagram Graph API не поддерживает прямую авторизацию из мобильного приложения без Facebook SDK. Стандартный поток:
- Авторизация через Facebook Login SDK (
FBSDKLoginKitна iOS/Android). - Запрашиваем permission
instagram_content_publish,instagram_basic. - Получаем User Access Token Facebook.
- Обмениваем на long-lived token через бэкенд.
Facebook SDK на iOS — 6 МБ к бинарнику. Альтернатива без SDK — OAuth через ASWebAuthenticationSession / Custom Tab с ручной обработкой.
Ограничения и квоты
- 25 публикаций в сутки на один аккаунт (не на приложение).
- 200 запросов к API в час на один access token.
-
media_urlиз Basic Display API живёт только несколько часов — не кэшируйте их надолго. - Приложение должно пройти App Review в Facebook если запрашивает
instagram_content_publish— процесс занимает 5-10 рабочих дней.
Webhooks
Graph API поддерживает webhooks для событий: новый комментарий, новое упоминание, изменение статуса публикации. Настройка через Facebook Developer Console: указываем verify token и callback URL. Требует публичного HTTPS endpoint на вашем сервере.
Этапы работы
Регистрация Facebook App + настройка Instagram product → OAuth-поток с нужными permissions → реализация API-вызовов через бэкенд → прохождение App Review для production-доступа.
Сроки
Базовая интеграция (авторизация + чтение медиа) — 2-3 дня. С публикацией контента и webhooks — 4-6 дней, плюс время на App Review от Meta. Стоимость рассчитывается индивидуально.







