Перейти к содержимому
Socialift
Разделы документации
Настройка

Приложение 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

  1. Создайте приложение

    На developers.facebook.com/apps начните создание приложения: укажите название и контактный email, затем выберите use cases (например, «Manage everything on your Page»). Если нужен Facebook Login for Business с config_id, а подходящего сценария в списке нет, выберите «Other», а затем тип приложения Business.

  2. Подключите бизнес-портфолио

    Мастер предложит подключить подтверждённое или неподтверждённое бизнес-портфолио либо создать новое. Подключите компанию, которой будет принадлежать интеграция: именно её потом подтверждают для Advanced Access.

  3. Скопируйте App ID и App Secret

    Оба значения — в App settings → Basic. App ID также виден в верхней части дашборда. Храните секрет в переменных окружения или менеджере секретов.

  4. Добавьте redirect URI

    Добавьте продукт Facebook Login for Business (use case мог добавить его сам). В его настройках впишите адрес callback в Valid OAuth Redirect URIs. При включённом Strict Mode Meta требует точного совпадения: другой путь или query-параметр, которого нет в списке, будут отклонены.

  5. Создайте конфигурацию и получите config_id

    В разделе Configurations создайте конфигурацию (или возьмите шаблон): название, тип токена, бизнес-активы и разрешения. Тип токена — User access token: поток входа Socialift обменивает код на долгоживущий пользовательский токен и затем читает Pages. System user token требует в ссылке входа дополнительный параметр (override_default_response_type), который этот поток не отправляет. Скопируйте Configuration ID.

  6. Добавьте разрешения в use case

    На экране настройки use case добавьте из таблицы ниже только те разрешения, которые интеграция действительно использует. По документации Meta, самая частая причина отказа в App Review — запрос разрешения или функции, которые приложению не нужны.

  7. Настройте вебхуки

    Endpoint должен работать по HTTPS с валидным сертификатом (самоподписанные не принимаются). Укажите Callback URL и Verify token, подтвердите, затем подпишитесь на поля: объект Page — leadgen (Lead Ads) и feed (посты и комментарии); объект Instagram — comments, mentions и messages для Direct. После этого каждая Page должна установить приложение через subscribed_apps — без этого события не приходят.

  8. Добавьте роли и тестировщиков

    В панели Roles пригласите администраторов, разработчиков и тестировщиков. До App Review разрешения могут выдать только люди с ролью в приложении (или в бизнесе, которому оно принадлежит) — так тестируют на своих Pages.

  9. Пройдите App Review и Business Verification

    Для Pages и аккаунтов, которыми вы не управляете, каждому разрешению нужен Advanced Access. На каждое разрешение — отдельное описание и запись экрана (пользователь выдаёт разрешение, приложение его использует); в течение 30 дней до отправки — хотя бы один успешный API-вызов с этим разрешением; URL политики конфиденциальности и иконка 1024×1024. Для Advanced Access обязательна Business Verification.

Как добавить приложение Meta в Socialift

  1. Откройте «Kalitlar» → «Meta (Facebook) app»

    В кабинете откройте раздел «Kalitlar» (ключи) и разверните карточку «Meta (Facebook) app». В боковом блоке «Konsolga ko'chiring» (скопируйте в консоль) Redirect URI виден ещё до сохранения ключа — вставьте его в Valid OAuth Redirect URIs.

  2. Заполните поля

    App ID и App secret обязательны. Configuration ID необязателен: если он заполнен, в ссылку входа уходит config_id, а поле «Scope'lar» не используется. Для приложения Consumer оставьте его пустым — тогда отправляется список scope (пустое «Scope'lar» = стандартный список, через запятую или пробел).

  3. Нажмите «Saqlash va tekshirish» (сохранить и проверить)

    Socialift запрашивает у Meta app access token с вашими ID и секретом: при совпадении ключ помечается проверенным, при отказе показывается ошибка Meta. Проверяется только пара ID и секрета — redirect URI, config_id и разрешения проверяются при первом реальном входе. Секрет хранится зашифрованным и целиком не возвращается; если при редактировании оставить поле пустым, сохранится старый.

  4. Скопируйте адреса вебхука и callback

    После сохранения в карточке появятся Webhook URL, Webhook verify token, Deauthorize callback и Data deletion callback. Ваше приложение получает собственный адрес вебхука, и входящие события проверяются вашим App Secret. Пару вебхука вставьте в настройки Webhooks, deauthorize — в настройки Facebook Login, data deletion — в поле в App settings → Basic.

  5. Подключите аккаунт и синхронизируйте 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Контент и метаданные Pagefb.posts, fb.comments, fb.post_insights
pages_manage_postsСоздание, редактирование и удаление постов Pagefb.publish_post, fb.delete_post
pages_manage_engagementСоздание, редактирование и удаление комментариев на Pagefb.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 Adsfb.lead_forms, fb.leads
pages_manage_adsУправление рекламой, связанной с Pagefb.lead_forms
instagram_basicПрофиль и медиа Instagram через Pageig.profile, ig.media
instagram_content_publishПубликация постов в Instagramig.publish
instagram_manage_commentsСоздание, скрытие и удаление комментариев Instagramig.comments, ig.reply_comment
instagram_manage_insightsСтатистика аккаунта и медиа Instagramig.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_managementBusiness 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.

meta_login.py
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, а существующие продолжат работать.

Источники

  1. Meta: Create an App
  2. Meta: Facebook Login for Business
  3. Meta: Permissions Reference
  4. Meta: Webhooks for Pages
  5. Meta: App Review submission guide
  6. Meta: Business Verification

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