Перейти к содержимому
Socialift
Платформа

Интеграция Facebook API

Socialift работает поверх Facebook Graph API и собирает основные операции со страницами в один Python SDK: OAuth и токены страниц, посты и комментарии, статистику постов, формы и заявки Lead Ads, рекламу и таргетинг через Marketing API, а также проверку подписи вебхуков Meta.

Обновлено:

Что такое Facebook Graph API

Graph API — основной интерфейс платформы Meta. Через него приложение в рамках выданных пользователем разрешений получает доступ к страницам, постам, комментариям, заявкам из рекламы и статистике. Instagram API построен поверх того же Graph API, поэтому интеграция с Facebook часто становится основой и для Instagram.

На практике начинать с Facebook логично: пользователь один раз проходит OAuth, и возвращается список его страниц вместе с привязанными к ним Instagram-аккаунтами. Дальше токен каждой страницы (page.access_token) обслуживает и саму страницу, и привязанный к ней Instagram-аккаунт.

Что есть на стороне Facebook

01

Страницы и токены

Список страниц пользователя, токены страниц и привязанные Instagram-аккаунты.

02

Реклама и таргетинг

Marketing API: рекламные аккаунты, поиск интересов и локаций, оценка охвата без расходов, кампании, группы объявлений, креативы, custom и lookalike аудитории.

03

Посты и комментарии

Публикация, чтение, удаление; ответы на комментарии и скрытие.

04

Lead Ads

Список лид-форм и содержимое заявок — вместе с вебхуком leadgen.

05

Статистика постов

Статистика постов через post_insights. Инсайтов уровня страницы и демографии аудитории Facebook в SDK нет (демография есть для Instagram: ig.demographics). В 2025 году Meta заменила метрики impressions на views (post_media_view).

06

Вебхуки

События комментариев (feed) и leadgen: verify_request проверяет подпись, parse_events разбирает, dedupe_key отсекает дубли. Интеграции с Messenger нет.

Получение страниц

После OAuth-callback один вызов возвращает и страницы, и привязанные к ним Instagram-аккаунты.

pages.py
import asyncio
from socialift import Facebook

async def main(code: str):
    # FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, SOCIALIFT_LICENSE_KEY
    async with Facebook.from_env() as fb:
        token = await fb.exchange_code(code, redirect_uri="https://ваш-домен/cb")
        for page in await fb.pages(token.access_token):
            print(page.name, "→ instagram:", page.instagram_username)

asyncio.run(main(code="..."))  # ?code= from the OAuth callback

История страницы: два шага для фото, три фазы для видео

История страницы — не обычный пост и через edge feed не публикуется. Фото уходит в photo_stories, видео — в video_stories, чтение идёт через GET /{page-id}/stories. SDK сводит оба потока к одному вызову.

page_story.py
import asyncio
from socialift import Facebook

async def main(page_id: str, page_token: str):
    async with Facebook.from_env() as fb:
        photo = await fb.publish_photo_story(page_id, page_token,
                                             photo_url="https://cdn.ваш-домен/story.jpg")
        print(photo["post_id"])

        video = await fb.publish_video_story(page_id, page_token,
                                             video_url="https://cdn.ваш-домен/story.mp4")
        print(await fb.video_story_status(video["video_id"], page_token))
        print(len(await fb.stories(page_id, page_token, limit=25)))

asyncio.run(main("PAGE_ID", "PAGE_TOKEN"))

Фото публикуется в два шага, потому что edge photo_stories не принимает ссылку — только photo_id. Поэтому изображение сначала загружается как **неопубликованное**: POST /{page-id}/photos?published=false&url=... (в ленте оно не появляется и живёт на серверах Meta около 24 часов), а затем полученный photo_id публикуется как история.

Для видео Meta требует собственный протокол resumable upload, то есть три фазы: upload_phase=start открывает сессию и возвращает video_id и upload_url (он указывает на rupload.facebook.com), затем файл или ссылка отправляются по этому адресу, и upload_phase=finish публикует историю. Ответ второго шага не означает, что загрузка завершена, поэтому перед finish SDK ждёт uploading_phase.status == "complete" — состояние показывает fb.video_story_status(...).

Разрешения одинаковы для всех трёх операций: pages_manage_posts, pages_read_engagement, pages_show_list. Дополнительно у владельца токена должна быть задача (task) CREATE_CONTENT на самой странице — одной роли администратора недостаточно.

Требования к видео: .mp4, соотношение 9:16, от 540x960 до 1080x1920, 24–60 FPS, H.264 или H.265, звук AAC 48 кГц. По длительности документация Meta сама себе противоречит: в одном месте «3–90 секунд», в другом «не длиннее 60 секунд»; безопасный диапазон — 3–60 секунд.

Типичные ловушки интеграции с Facebook

  • Если в настройках приложения включён «Require App Secret», запросы без appsecret_proof отклоняются — SDK добавляет его к каждому запросу сам.
  • Токен страницы отличается от пользовательского: действия выполняются токеном страницы.
  • Кампании, группы объявлений и объявления создаются в статусе PAUSED, а бюджет задаётся в основных единицах валюты — запуск подтверждайте отдельно.
  • При Standard Access разрешения работают только для людей с ролью в приложении (админ, разработчик, тестировщик); для остальных нужен Advanced Access — App Review и проверка компании (Business Verification).
  • Токен страницы привязан к связке «страница + админ + приложение»: если этот человек сменит пароль, удалит приложение или потеряет роль на странице, токен перестанет работать.

Частые вопросы

Можно ли управлять рекламой Facebook через API?

Да. Через Meta Marketing API создаются кампании, группы объявлений, объявления и креативы, для таргетинга ищутся интересы и локации, а охват оценивается без расходов. При создании аудиторий из email и телефонов клиентов данные хешируются SHA-256 на вашем сервере, где работает SDK.

Нужны ли отдельные интеграции для Facebook и Instagram?

Не обязательно. Через Facebook Login один поток OAuth даёт и страницы, и привязанные к ним профессиональные аккаунты Instagram. Для Instagram без страницы в SDK есть Instagram Login: Instagram(app_id, app_secret). В обоих случаях аккаунт должен быть Business или Creator.

Обязателен ли App Review для работы с Facebook API?

Если приложением пользуются только люди с ролью в нём (админы, разработчики, тестировщики) — нет, хватает Standard Access. Для работы со страницами других пользователей каждому разрешению нужен Advanced Access: App Review и проверка компании (Business Verification).

Можно ли публиковать истории страницы Facebook через API?

Да, через Page Stories API. Фото публикуется в два шага: сначала загружается неопубликованное изображение (published=false), затем его photo_id передаётся в edge photo_stories — ссылку этот edge не принимает. Видео требует трёхфазной resumable-загрузки (upload_phase=start → отправка файла на upload_url → upload_phase=finish). Нужны разрешения pages_manage_posts, pages_read_engagement, pages_show_list и задача CREATE_CONTENT на странице у владельца токена. В SDK это fb.publish_photo_story(...) и fb.publish_video_story(...).

Можно ли получать сообщения Facebook Messenger через Socialift?

Нет, интеграции с Facebook Messenger в Socialift нет: SDK не читает диалоги Messenger и не отвечает в них. Из сообщений Meta поддерживается Instagram Direct — через ig.conversations и ig.send_message.

Источники

  1. Meta — устаревшие метрики страниц
  2. Meta — обновления Page Insights API (2025)
  3. Meta — Securing Graph API requests (appsecret_proof)
  4. Meta — Access levels (Standard / Advanced)
  5. Meta — Page Stories API
  6. Meta — Instagram Platform overview
  7. Meta — Access tokens

Связанные страницы

Подключите страницы Facebook

Получите токен и вытяните список страниц уже сегодня.

Получить бесплатный токен →