Graph API — это основной инструмент для загрузки данных на платформу Facebook и их получения с Facebook. Он представляет собой API на базе HTTP, с помощью которого приложения могут программным путем запрашивать данные, публиковать новые истории, управлять рекламой, загружать фото и выполнять множество других задач.
Название API Graph подчеркивает связь этого API с "социальным графом" — системой представления информации на Facebook. Он состоит из узлов, границ контекста и полей. С помощью узлов можно получать данные о конкретном объекте, границы контекста позволяют получать подборки объектов, связанные с отдельным объектом, а поля — получать данные об отдельном объекте или о каждом объекте в подборке. В документации как узел, так и граница контекста могут называться конечными точками. Например, "отправьте запрос GET к конечной точке User".
Все данные передаются по протоколу HTTP/1.1, а для работы конечных точек необходим протокол HTTPS. В основе API Graph лежит протокол HTTP, поэтому он работает со всеми языками, в которых есть библиотека HTTP (например, cURL и urllib). Другими словами, API Graph можно использовать прямо в браузере. Например, запрос в браузере URL
https://graph.facebook.com/facebook/picture?redirect=false
эквивалентен следующему запросу cURL:
curl -i -X GET "https://graph.facebook.com/facebook/picture?redirect=false"
Кроме того, мы включили на сайте facebook.com директиву HSTS includeSubdomains, однако это не должно повлиять на ваши вызовы API Graph.
Все запросы передаются в URL хоста graph.facebook.com.
С помощью маркеров доступа приложение может взаимодействовать с API Graph. Почти для всех конечных точек API Graph необходим тот или иной маркер доступа, поэтому при обращении к конечной точке может потребоваться указание маркера в запросе. Как правило, они выполняют две функции:
Дополнительную информацию см. в нашей документации по маркерам доступа.
Узел — это отдельный объект с уникальным ID. Например, существует множество объектов узлов User, каждый из которых имеет свой уникальный ID и соответствует отдельному человеку на Facebook. Примерами узлов социального графа Facebook являются Page, Post, Photo и Comment.
Следующий пример cURL представляет собой вызов к узлу User:
curl -i -X GET \ "https://graph.facebook.com/USER-ID?access_token=ACCESS-TOKEN"
По умолчанию этот запрос возвращает следующие данные в формате JSON:
{
"name": "Your Name",
"id": "YOUR-USER-ID"
}Параметр metadata упразднен в Graph API версии 25.0 и больше не возвращает метаданные о целевом узле. Вместо него используйте Graph API Explorer или справку по API. Этот параметр будет упразднен для всех версий с 19 мая 2026 г.
Для объекта узла, такого как User, Page или Photo, можно получить список всех полей с их именами, описаниями и типами данных. Отправьте запрос GET к ID объекта с параметром metadata=1:
curl -i -X GET \
"https://graph.facebook.com/USER-ID?
metadata=1&access_token=ACCESS-TOKEN"Ответ JSON будет содержать свойство metadata со списком всех поддерживаемых полей выбранного узла:
{
"name": "Jane Smith",
"metadata": {
"fields": [
{
"name": "id",
"description": "The app user's App-Scoped User ID. This ID is unique to the app and cannot be used by other apps.",
"type": "numeric string"
},
{
"name": "age_range",
"description": "The age segment for this person expressed as a minimum and maximum age. For example, more than 18, less than 21.",
"type": "agerange"
},
{
"name": "birthday",
"description": "The person's birthday. This is a fixed format string, like `MM/DD/YYYY`. However, people can control who can see the year they were born separately from the month and day so this string can be only the year (YYYY) or the month + day (MM/DD)",
"type": "string"
},
...Узел /me — это специальная конечная точка, которая преобразуется в ID объекта человека или Страницы, маркер доступа которых используется в вызовах API. Если у вас есть маркер доступа, следующий запрос позволит получить имя и ID пользователя:
curl -i -X GET \ "https://graph.facebook.com/me?access_token=ACCESS-TOKEN"
Граница контекста — это связь между двумя узлами. Например, с узлом User могут быть связаны фотографии, а с узлом Photo — комментарии. В примере ниже cURL возвращает список фотографий, которые человек опубликовал на Facebook.
curl -i -X GET \ "https://graph.facebook.com/USER-ID/photos?access_token=ACCESS-TOKEN"
Каждый возвращенный ID представляет узел Photo со сведениями о том, когда именно снимок был загружен на Facebook.
{
"data": [
{
"created_time": "2017-06-06T18:04:10+0000",
"id": "1353272134728652"
},
{
"created_time": "2017-06-06T18:01:13+0000",
"id": "1353269908062208"
}
],
}Поля — это свойства узла. Когда вы запрашиваете узел или границу контекста, возвращается набор полей по умолчанию (см. примеры выше). Чтобы получить только некоторые поля, укажите их в параметре fields. Так вы получите только нужные поля и ID объекта, который всегда содержится в ответе.
В параметр fields следующего запроса cURL добавлены имя, электронный адрес и фото профиля пользователя.
curl -i -X GET \ "https://graph.facebook.com/USER-ID?fields=id,name,email,picture&access_token=ACCESS-TOKEN"
{
"id": "USER-ID",
"name": "EXAMPLE NAME",
"email": "EXAMPLE@EMAIL.COM",
"picture": {
"data": {
"height": 50,
"is_silhouette": false,
"url": "URL-FOR-USER-PROFILE-PICTURE",
"width": 50
}
}
}Большинство параметров представляют собой простые примитивы, такие как bool, string и int. Однако в запросах также можно использовать параметры типа list и object.
Тип list можно задать в синтаксисе JSON, например: ["firstitem", "seconditem", "thirditem"].
Тип object также можно задать в синтаксисе JSON, например: {"firstkey": "firstvalue", "secondKey": 123}.
Информацию о том, как опубликовать что-то на странице Facebook пользователя, см. в нашем руководстве по публикации на Facebook. Сведения о публикации в ленте Страницы Facebook см. в документации по API Pages.
Некоторые узлы позволяют обновлять поля с помощью операций POST. Например, вы можете обновить свое поле email следующим образом:
curl -i -X POST \ "https://graph.facebook.com/USER-ID?email=YOURNEW@EMAILADDRESS.COM&access_token=ACCESS-TOKEN"
Для конечных точек создания и обновления API Graph может моментально считывать успешно опубликованный или обновленный объект и возвращать любые поля, поддерживаемые соответствующей конечной точкой чтения.
По умолчанию возвращается ID созданного или обновленного объекта. Чтобы получить в ответе дополнительную информацию, добавьте в запрос параметр fields и список нужных вам полей. Например, чтобы опубликовать приветствие в ленте пользователя, можно выполнить следующий запрос:
curl -i - X POST "https://graph.facebook.com/PAGE-ID/feed?message=Hello& fields=created_time,from,id,message&access_token=ACCESS-TOKEN"
Запрос вернет указанные поля в формате JSON:
{
"created_time": "2017-04-06T22:04:21+0000",
"from": {
"name": "My Facebook Page",
"id": "PAGE-ID"
},
"id": "POST_ID",
"message": "Hello",
}Информацию о том, поддерживает ли конечная точка чтение после записи и какие имеются поля, см. в справочной документации по каждой конечной точке.
Если по какой-либо причине считать данные не удалось (например, в запросе указано несуществующее поле), API Graph вернет стандартное сообщение об ошибке. Подробнее см. в нашем руководстве по обработке ошибок.
Удалить узел (например, Post или Photo) обычно можно с помощью операции DELETE с указанием ID объекта:
curl -i -X DELETE \ "https://graph.facebook.com/PHOTO-ID?access_token=ACCESSS-TOKEN"
Как правило, вы можете удалять только узлы, созданные вами. Подробнее о требованиях к операциям удаления см. в справке по конкретному узлу.
Чтобы получать уведомления об изменениях в узлах и взаимодействиях с узлами, подпишитесь на Webhooks. См. раздел Webhooks.
API Graph имеет несколько версий. Они выпускаются ежеквартально. Чтобы указать версию в вызове, добавьте букву "v" и номер версии в начало пути запроса. Например, так можно вызвать API версии 4.0:
curl -i -X GET \
"https://graph.facebook.com/v4.0/USER-ID/photos
?access_token=ACCESS-TOKEN"Если номер версии не указан, по умолчанию будет вызвана самая старая доступная версия, поэтому рекомендуется всегда указывать номер нужной версии.
Дополнительные сведения о версиях см. в нашем руководстве по управлению версиями, а все доступные версии перечислены в журнале изменений API Graph.
Для подключения различных интерфейсов и разработки для разных платформ вы можете использовать различные API, SDK и платформы Facebook.
Приступайте к работе с API Graph: ознакомьтесь с социальным графом Facebook с помощью инструмента Graph Explorer и выполните пару запросов, чтобы получить данные.