Інтеграція Instagram API у мобільний додаток
Instagram API у 2024 році — це два різних продукти з принципово різними можливостями. Instagram Basic Display API (для особистих аккаунтів) та 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 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). - Запит дозволів
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-поток з потрібними дозволами → реалізація API-вызовів через бекенд → прохождження App Review від Meta для production-доступу.
Терміни
Базова інтеграція (авторизація + читання медіа) — 2-3 дня. З публікацією контенту та webhooks — 4-6 днів, плюс час на App Review від Meta. Вартість розраховується індивідуально.







