Instagram API в мобильных приложениях: Graph и Basic Display
Мы настраиваем Instagram API в мобильных приложениях. Часто клиенты просят «добавьте Instagram», не уточняя детали. А зря: выбор неправильного API съедает недели разработки. Instagram Graph API (для бизнес-аккаунтов) позволяет публиковать контент, управлять комментариями и смотреть аналитику. Instagram Basic Display API (для личных аккаунтов) — только чтение медиа пользователя. Разбираемся на практике.
Правильный выбор API экономит до 40% времени на интеграцию и снижает риски отказов в App Review. На основе 20+ проектов мы гарантируем рабочее решение.
Какой API Instagram выбрать для публикации?
Сразу уточните: нужно ли публиковать в Instagram или только показывать фото? Для чтения подойдёт Basic Display. Для публикации — только Graph API, и он требует бизнес-аккаунта, подключённого к Facebook Page. Наш опыт: более 5 лет работы с Instagram API, 20+ проектов — мы гарантируем правильный выбор.
| Функция | Basic Display API | Graph API |
|---|---|---|
| Чтение медиа пользователя | Да | Да |
| Публикация фото и видео | Нет | Да |
| Управление комментариями | Нет | Да |
| Получение инсайтов | Нет | Да |
| Поддержка личных аккаунтов | Да | Нет |
| Требуемый тип аккаунта | Личный | Бизнес (Instagram Creator или Business) |
Сравнение показывает: Graph API лучше, если нужен контроль над контентом. Basic Display — только для «войти через Instagram». Официальная документация Instagram рекомендует Graph 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. Ограничение: нельзя публиковать, комментировать или получать followers. Только чтение своего контента.
Instagram Graph API: публикация сегодня
Для публикации требуется бизнес-аккаунт Instagram, подключённый к Facebook Page, приложение в Facebook Developer Console с правами instagram_content_publish. API стабилен уже несколько лет.
Как получить токен доступа в мобильном приложении?
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 с ручной обработкой. Мы используем SDK в 80% проектов — это быстрее и надёжнее. Подробнее про OAuth можно прочитать на Wikipedia.
Публикация фото: двухшаговый процесс
- Создаём 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 скачивает его на свои серверы. Архитектура: клиент загружает фото на S3 → получает публичный URL → передаёт на сервер → сервер вызывает Graph API. Мы гарантируем корректную обработку ошибок и повторные попытки.
Публикация видео (Reels) и каруселей
Тот же двухшаговый поток, но с media_type=REELS и video_url. После создания контейнера нужно дождаться обработки видео — статус проверяется через GET /{container-id}?fields=status_code. Для карусели: три шага — создать item-контейнер для каждого фото, затем carousel-контейнер с children=id1,id2,id3, затем опубликовать.
| Параметр | Значение |
|---|---|
| Маскимальное количество карусели | 10 элементов |
| Требования к медиа | 1080x1080, JPG/PNG |
| Timeout обработки видео | до 10 секунд |
Ограничения и квоты
- 25 публикаций в сутки на один аккаунт.
- 200 запросов в час на один 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. В этом разделе мы подключаем уведомления в реальном времени — ваш сервер получает данные без опросов.
Этапы работ
- Аналитика: определяем нужные API, permissions, архитектуру.
- Регистрация Facebook App + настройка Instagram product.
- Реализация OAuth-потока на клиенте и сервере.
- Разработка основного функционала (чтение, публикация, webhooks).
- Тестирование: интеграционное, нагрузочное.
- Прохождение App Review.
- Деплой и документация.
Сроки
Базовая интеграция (авторизация + чтение медиа) — от 3 дней. С публикацией и webhooks — от 6 дней, плюс время на App Review. Точные сроки и стоимость рассчитываем индивидуально. Закажите консультацию — оценим за 1 рабочий день.
Типичные ошибки при интеграции
- Забывают обновить токен — ошибка 401 после 60 дней.
- Не указывают правильный scope в OAuth — получают 403.
- Пытаются кэшировать media_url дольше нескольких часов.
- Не проходят App Review — не хватает скриншотов функционала.
Свяжитесь с нами для консультации. Получите индивидуальное предложение под ваш проект.







