Приложение Meta для Facebook и Instagram API: пошаговая настройка
Чтобы работать с API Meta, нужно своё приложение на developers.facebook.com: создайте его с подходящими сценариями (use cases), возьмите App ID и App Secret в App settings → Basic, а в приложении типа Business создайте конфигурацию Facebook Login for Business и получите config_id. Затем настройте redirect URI и вебхуки, а для чужих аккаунтов пройдите App Review и Business Verification.
Обновлено:
Что даёт приложение Meta?
Приложение Meta даёт три значения: App ID (публичный идентификатор, передаётся в ссылке входа), App Secret (секрет: обмен кода авторизации на токен, подпись appsecret_proof и проверка подписи вебхуков) и необязательный Configuration ID (config_id) — конфигурация Facebook Login for Business, которая заменяет в ссылке входа список разрешений (scope).
Одно приложение Meta покрывает Facebook Pages, Instagram-аккаунты, привязанные к Page, Lead Ads и Marketing API. Instagram без Facebook Page работает через другой продукт и другие ключи — об этом руководство по Instagram Login.
App Secret не должен попадать в браузер, мобильное приложение или публичный репозиторий. Если он утёк — создайте новый в дашборде и замените везде, включая страницу «Kalitlar» (ключи) в кабинете Socialift.
Основные термины
- Use case
- Сценарий интеграции, который выбирается при создании приложения (например, «Manage everything on your Page»). От него зависят разрешения и продукты. После создания use case удалить нельзя — можно только добавить совместимый.
- Facebook Login for Business
- Продукт входа для приложений типа Business. Разрешения выбираются в конфигурации в дашборде, а в код передаётся только её ID (
config_id). - Standard и Advanced Access
- При Standard Access разрешения могут выдать только люди с ролью в приложении. Для Pages и аккаунтов, которыми вы не управляете, каждому разрешению нужен Advanced Access через App Review.
- Business Verification
- Подтверждение компании в Meta. Приложение, запрашивающее Advanced Access, должно быть подключено к подтверждённому бизнес-портфолио.
Как создать и настроить приложение Meta
Создайте приложение
На developers.facebook.com/apps начните создание приложения: укажите название и контактный email, затем выберите use cases (например, «Manage everything on your Page»). Если нужен Facebook Login for Business с
config_id, а подходящего сценария в списке нет, выберите «Other», а затем тип приложения Business.Подключите бизнес-портфолио
Мастер предложит подключить подтверждённое или неподтверждённое бизнес-портфолио либо создать новое. Подключите компанию, которой будет принадлежать интеграция: именно её потом подтверждают для Advanced Access.
Скопируйте App ID и App Secret
Оба значения — в App settings → Basic. App ID также виден в верхней части дашборда. Храните секрет в переменных окружения или менеджере секретов.
Добавьте redirect URI
Добавьте продукт Facebook Login for Business (use case мог добавить его сам). В его настройках впишите адрес callback в Valid OAuth Redirect URIs. При включённом Strict Mode Meta требует точного совпадения: другой путь или query-параметр, которого нет в списке, будут отклонены.
Создайте конфигурацию и получите config_id
В разделе Configurations создайте конфигурацию (или возьмите шаблон): название, тип токена, бизнес-активы и разрешения. Тип токена — User access token: поток входа Socialift обменивает код на долгоживущий пользовательский токен и затем читает Pages. System user token требует в ссылке входа дополнительный параметр (
override_default_response_type), который этот поток не отправляет. Скопируйте Configuration ID.Добавьте разрешения в use case
На экране настройки use case добавьте из таблицы ниже только те разрешения, которые интеграция действительно использует. По документации Meta, самая частая причина отказа в App Review — запрос разрешения или функции, которые приложению не нужны.
Настройте вебхуки
Endpoint должен работать по HTTPS с валидным сертификатом (самоподписанные не принимаются). Укажите Callback URL и Verify token, подтвердите, затем подпишитесь на поля: объект Page —
leadgen(Lead Ads) иfeed(посты и комментарии); объект Instagram —comments,mentionsиmessagesдля Direct. После этого каждая Page должна установить приложение черезsubscribed_apps— без этого события не приходят.Добавьте роли и тестировщиков
В панели Roles пригласите администраторов, разработчиков и тестировщиков. До App Review разрешения могут выдать только люди с ролью в приложении (или в бизнесе, которому оно принадлежит) — так тестируют на своих Pages.
Пройдите App Review и Business Verification
Для Pages и аккаунтов, которыми вы не управляете, каждому разрешению нужен Advanced Access. На каждое разрешение — отдельное описание и запись экрана (пользователь выдаёт разрешение, приложение его использует); в течение 30 дней до отправки — хотя бы один успешный API-вызов с этим разрешением; URL политики конфиденциальности и иконка 1024×1024. Для Advanced Access обязательна Business Verification.
Как добавить приложение Meta в Socialift
Откройте «Kalitlar» → «Meta (Facebook) app»
В кабинете откройте раздел «Kalitlar» (ключи) и разверните карточку «Meta (Facebook) app». В боковом блоке «Konsolga ko'chiring» (скопируйте в консоль) Redirect URI виден ещё до сохранения ключа — вставьте его в Valid OAuth Redirect URIs.
Заполните поля
App ID и App secret обязательны. Configuration ID необязателен: если он заполнен, в ссылку входа уходит
config_id, а поле «Scope'lar» не используется. Для приложения Consumer оставьте его пустым — тогда отправляется списокscope(пустое «Scope'lar» = стандартный список, через запятую или пробел).Нажмите «Saqlash va tekshirish» (сохранить и проверить)
Socialift запрашивает у Meta app access token с вашими ID и секретом: при совпадении ключ помечается проверенным, при отказе показывается ошибка Meta. Проверяется только пара ID и секрета — redirect URI,
config_idи разрешения проверяются при первом реальном входе. Секрет хранится зашифрованным и целиком не возвращается; если при редактировании оставить поле пустым, сохранится старый.Скопируйте адреса вебхука и callback
После сохранения в карточке появятся Webhook URL, Webhook verify token, Deauthorize callback и Data deletion callback. Ваше приложение получает собственный адрес вебхука, и входящие события проверяются вашим App Secret. Пару вебхука вставьте в настройки Webhooks, deauthorize — в настройки Facebook Login, data deletion — в поле в App settings → Basic.
Подключите аккаунт и синхронизируйте Pages
В разделе «Ulanishlar» (подключения) нажмите «Ulash» (подключить) на карточке Facebook, затем «Page'larni sinxronlash» (синхронизировать Pages) — добавятся Pages и привязанные к ним Instagram-аккаунты. Подпишите каждую Page на вебхуки в Playground (раздел «Page'lar va webhook») или в SDK через
fb.subscribe_page.
Какие разрешения нужны приложению?
Это стандартный список «Scope'lar» в Socialift. При использовании config_id те же разрешения выбираются внутри конфигурации.
| Разрешение | Что даёт | Где нужно в SDK |
|---|---|---|
public_profile | Стандартные поля профиля вошедшего пользователя | Вход |
email | Основной email | Вход |
pages_show_list | Список Pages, которыми управляет пользователь | fb.pages |
pages_read_engagement | Контент и метаданные Page | fb.posts, fb.comments, fb.post_insights |
pages_manage_posts | Создание, редактирование и удаление постов Page | fb.publish_post, fb.delete_post |
pages_manage_engagement | Создание, редактирование и удаление комментариев на Page | fb.reply_comment, fb.hide_comment |
read_insights | Статистика Page и постов | fb.post_insights |
pages_manage_metadata | Подписка Page на вебхуки и изменение её настроек | fb.subscribe_page |
pages_messaging | Переписки Page в Messenger; нужно для поля вебхука Page messages | Только в стандартном списке — методов Messenger в Socialift нет |
leads_retrieval | Чтение данных, собранных формами Lead Ads | fb.lead_forms, fb.leads |
pages_manage_ads | Управление рекламой, связанной с Page | fb.lead_forms |
instagram_basic | Профиль и медиа Instagram через Page | ig.profile, ig.media |
instagram_content_publish | Публикация постов в Instagram | ig.publish |
instagram_manage_comments | Создание, скрытие и удаление комментариев Instagram | ig.comments, ig.reply_comment |
instagram_manage_insights | Статистика аккаунта и медиа Instagram | ig.insights, ig.media_insights |
instagram_manage_messages | Чтение Instagram Direct и ответы | ig.conversations, ig.send_message |
ads_read | Отчёты по рекламе (Ads Insights) | Ads.campaigns, Ads.insights_rows |
ads_management | Управление рекламными аккаунтами и объявлениями | Ads.create_campaign, fb.ad_context |
business_management | Business Manager API | В стандартном списке |
Примечания и ограничения
По документации Meta, для полного получения лидов нужны вместе ads_management, leads_retrieval, pages_show_list, pages_read_engagement и pages_manage_ads. Для Instagram Direct через Page нужны instagram_basic, instagram_manage_messages и pages_manage_metadata.
Ключи в Python SDK
Facebook.from_env() читает из окружения FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, FACEBOOK_CONFIG_ID и META_GRAPH_VERSION.
import asyncio
import secrets
from socialift import Facebook
REDIRECT_URI = "https://example.com/auth/facebook/callback" # как в Valid OAuth Redirect URIs
async def main() -> None:
# FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, FACEBOOK_CONFIG_ID, SOCIALIFT_LICENSE_KEY
async with Facebook.from_env() as fb:
state = secrets.token_urlsafe(32) # сохраните в сессии и сверьте в callback
print(fb.login_url(redirect_uri=REDIRECT_URI, state=state))
code = input("code: ")
token = await fb.exchange_code(code, redirect_uri=REDIRECT_URI)
print(await fb.granted_scopes(token.access_token)) # реально выданные разрешения
for page in await fb.pages(token.access_token):
await fb.subscribe_page(page.id, page.access_token, fields=["leadgen", "feed"])
asyncio.run(main())Явно: Facebook(app_id="...", app_secret="...", config_id="..."). С config_id метод login_url отправляет config_id вместо scope, без него — список scopes.
redirect_uri в exchange_code должен символ в символ совпадать с тем, что был в ссылке входа.
Частые ошибки
- Redirect URI отличается от указанного в Valid OAuth Redirect URIs (http/https,
/в конце, лишний query-параметр). - В карточку Meta вписаны Instagram app ID/secret (или наоборот) — это разные ключи.
- В конфигурации выбран System user access token — поток входа Socialift ожидает User access token.
- Заполнен Configuration ID, а разрешения меняют в поле «Scope'lar» — в этом случае их меняют в самой конфигурации.
- Вебхук настроен на уровне приложения, но Page не подписана через
subscribed_apps— событий не будет. - До App Review тестируют аккаунтом без роли в приложении — разрешения не выдаются.
- Запрошен Advanced Access для неиспользуемых разрешений — App Review отклонит.
- App Secret лежит во фронтенде или в репозитории.
Частые вопросы
Где найти App ID и App Secret приложения Facebook?
В Meta App Dashboard → App settings → Basic. App ID также показан вверху дашборда. App Secret хранится только на сервере; в кабинете Socialift он лежит в зашифрованном виде на странице «Kalitlar» (ключи).
Что такое config_id и обязателен ли он?
config_id — ID конфигурации Facebook Login for Business: разрешения, тип токена и активы выбираются в дашборде, а в код передаётся только ID. Рекомендуется для приложений типа Business. В приложении Consumer поле оставляют пустым, и разрешения запрашиваются через scope.
Можно ли тестировать без App Review?
Да. При Standard Access разрешения могут выдать люди с ролью в приложении (администратор, разработчик, тестировщик) — на своих Pages и аккаунтах всё проверяется полностью. App Review и Advanced Access нужны только для подключения аккаунтов, которыми вы не управляете.
Почему не приходят вебхуки Page?
Чаще всего Page не установила приложение через subscribed_apps — настройки на уровне приложения недостаточно. Также проверьте HTTPS и валидный сертификат, совпадение verify token и наличие pages_manage_metadata в токене.
Нужно ли отдельное приложение для Instagram?
Для Instagram через Page — нет, хватает того же приложения Meta и разрешений instagram_*. Для Instagram Login без Facebook Page в том же приложении Meta есть отдельные Instagram app ID и secret — их вписывают в карточку «Instagram Login app» на странице «Kalitlar».
Что будет, если удалить ключ Meta в «Kalitlar»?
Если через ключ подключены аккаунты, Socialift покажет их список и предупредит: их токены без секрета этого приложения не работают. При выборе «Baribir o'chirish va uzish» (всё равно удалить и отключить) ключ удаляется, аккаунты отключаются. Если просто снять отметку «Faol» (активен), новые подключения пойдут через ключ Socialift, а существующие продолжат работать.