Graph API¶
Graph API — это программный интерфейс приложения (API), предоставляемый компанией Meta (организация признана экстремистской и запрещена в РФ) для доступа к данным и функциональности социальной сети Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ), а также связанных с ней платформ, включая Instagram (продукт Meta, признанной экстремистской и запрещённой в РФ), Messenger и WhatsApp (Business API). Graph API является основным способом программного взаимодействия с платформой Facebook, позволяя разработчикам читать, создавать, обновлять и удалять объекты (например, пользователей, фотографии, страницы, события) и их связи (например, друзей, лайки, подписчики).
¶История
Graph API был представлен компанией Facebook (организация признана экстремистской и запрещена в РФ) в апреле 2010 года на конференции разработчиков f8. Он пришёл на смену старому REST API, который был менее гибким и не поддерживал графовую модель данных. Введение Graph API было частью стратегии Facebook по упрощению разработки приложений и расширению экосистемы платформы.
В 2013 году вышла вторая версия API (v2.0), которая ввела значительные изменения в политику доступа к данным, включая обязательную авторизацию через OAuth 2.0 и ограничения на запрос данных друзей пользователя. Это было связано с усилением требований к конфиденциальности после скандалов с утечкой данных.
В 2018 году, после скандала с Cambridge Analytica, Facebook (организация признана экстремистской и запрещена в РФ) ввёл дополнительные ограничения, включая необходимость утверждения приложений для доступа к определённым разрешениям (например, user_friends, user_posts). Версия v3.0 и последующие версии продолжили ужесточение правил.
¶Архитектура и принципы работы
Graph API построен на графовой модели данных. Каждый объект (например, пользователь, страница, фото) представляется как узел (node) графа, а связи между ними (например, дружба, лайк, публикация) — как рёбра (edges). API использует HTTP-запросы (GET, POST, DELETE, PUT) для взаимодействия с этими узлами и рёбрами.
¶Основные компоненты
- Узлы (Nodes): базовые объекты, такие как
User,Page,Post,Photo,Event. Каждый узел имеет уникальный идентификатор (ID). - Рёбра (Edges): связи между узлами, например,
/me/friends,/me/photos,/page/feed. Рёбра возвращают коллекции связанных объектов. - Поля (Fields): атрибуты узла, которые можно запросить (например,
id,name,email). Для экономии трафика можно указать только необходимые поля. - Доступ (Access Token): токен авторизации, необходимый для большинства запросов. Типы токенов: пользовательский (
User Access Token), страничный (Page Access Token), приложенческий (App Access Token).
¶Версионирование
Graph API использует версионирование в URL. Например, запрос к версии 19.0 выглядит как https://graph.facebook.com/v19.0/me`. Каждая версия поддерживается в течение двух лет. Версии нумеруются по году выпуска (например, v19.0 выпущена в 2024 году).
¶Классификация разрешений
Для доступа к данным через Graph API разработчик должен запросить у пользователя разрешения (permissions). Разрешения делятся на несколько категорий:
¶Стандартные разрешения (Default Permissions)
Доступны без дополнительного утверждения. К ним относятся:
public_profile— имя, аватар, возрастной диапазон, пол, локаль.email— подтверждённый email-адрес.
¶Разрешения с утверждением (Advanced Permissions)
Требуют прохождения процедуры утверждения приложения (App Review) со стороны Meta (организация признана экстремистской и запрещена в РФ). Примеры:
user_friends— доступ к списку друзей.user_posts— доступ к публикациям пользователя.pages_manage_posts— управление публикациями на странице.ads_management— управление рекламными кампаниями.
¶Разрешения для бизнес-аккаунтов (Business Permissions)
Используются для доступа к данным рекламных аккаунтов и бизнес-страниц. Например:
ads_read— чтение рекламных данных.business_management— управление бизнес-аккаунтами.
¶Применение
Graph API широко используется в различных сферах:
¶Социальные приложения
Разработчики используют API для интеграции входа через Facebook (Login with Facebook), публикации контента от имени пользователя, доступа к списку друзей и другим социальным данным.
¶Маркетинг и реклама
API позволяет управлять рекламными кампаниями, создавать аудитории, загружать пиксели и анализировать эффективность рекламы через Facebook Ads API (часть Graph API).
¶Управление страницами и сообществами
Владельцы страниц Facebook (организация признана экстремистской и запрещена в РФ) и администраторы групп используют API для автоматизации публикаций, модерации комментариев, анализа вовлечённости.
¶Интеграция с другими платформами
Graph API используется для интеграции Facebook с CRM-системами, платформами электронной коммерции, инструментами аналитики и чат-ботами (через Messenger Platform).
¶Ограничения и политика
¶Лимиты запросов
Meta (организация признана экстремистской и запрещена в РФ) устанавливает лимиты на количество запросов в единицу времени (rate limits). Для пользовательских токенов лимит составляет 200 запросов в час на пользователя, для страничных — 200 запросов в час на страницу. Для приложенческих токенов лимит зависит от количества пользователей приложения.
¶Запрет на определённые данные
После скандала с Cambridge Analytica доступ к данным друзей пользователя (кроме тех, кто также использует приложение) был существенно ограничен. Запрос user_friends возвращает только друзей, которые уже установили приложение.
¶Необходимость утверждения
Для доступа к чувствительным данным (например, user_posts, user_photos) приложение должно пройти процесс App Review, который включает проверку цели использования данных и соблюдения политики конфиденциальности.
¶Примеры запросов
¶Получение информации о пользователе
`` GET /v19.0/me?fields=id,name,email&access_token=TOKEN ``
Ответ: ``json { "id": "123456789", "name": "Иван Иванов", "email": "ivan@example.com" } ``
¶Получение списка друзей
`` GET /v19.0/me/friends?access_token=TOKEN ``
Ответ: ``json { "data": [ {"id": "987654321", "name": "Петр Петров"} ], "summary": {"total_count": 1} } ``
¶Публикация на странице
`` POST /v19.0/PAGE_ID/feed?message=Привет, мир!&access_token=PAGE_TOKEN ``
Ответ: ``json { "id": "PAGE_ID_POST_ID" } ``
¶Критика
Graph API неоднократно подвергался критике за сложность и частые изменения. Разработчики отмечают, что версионирование и постоянное ужесточение правил доступа усложняют поддержку приложений. Кроме того, процесс утверждения разрешений (App Review) часто описывается как непрозрачный и длительный.
Другой аспект критики — недостаточная документация. Несмотря на наличие официальной документации, некоторые функции API описаны неполно или требуют дополнительных экспериментов для понимания.
¶Сравнение с другими API
Graph API отличается от REST API других социальных сетей (например, Twitter API, VK API) графовой моделью данных и более строгими ограничениями на доступ к данным. В отличие от VK API, где доступ к списку друзей практически не ограничен, в Graph API он требует специального разрешения и возвращает только друзей, использующих приложение.
¶Источники
- Официальная документация Graph API (Meta for Developers)
- История изменений Graph API (Facebook Developer Blog)
- Статья «Facebook Graph API: A Comprehensive Guide» (Smashing Magazine)
- Материалы конференции f8 2010, 2013, 2018 годов
- Обсуждения на Stack Overflow по тегу
facebook-graph-api
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


