Что такое Facebook Graph Api?
API Graph — это основной инструмент для загрузки данных на платформу Facebook и их получения оттуда. Он представляет собой API на базе HTTP, с помощью которого приложения могут программным путем запрашивать данные, публиковать новые истории, управлять рекламой, загружать фото и выполнять множество других задач.
Создание контейнера
Для создания контейнера понадобится файл (фидео или фото) и описание (необязательно).
ВАЖНО - срок жизни контейнера - 24 часа! Для того чтобы создать контейнер необходимо выполнить запрос:
- URL для отправки сообщения
# GRAPH_API_VERSION - на текущий момент v12.0
# CLIENT_ID - ид клиента для которого создаем контейнер
url = "https://graph.facebook.com/#{GRAPH_API_VERSION}/#{CLIENT_ID}/media
- Параметры
# ACCESS_TOKEN - авторизационный токен клиента fb
# CAPTION - подпись к посту
# MEDIA_URL
params = {
access_token: ACCESS_TOKEN,
caption: CAPTION
}
# для фотографии
params[:image_url] = MEDIA_URL
# для видео
params[:video_url] = MEDIA_URL
params[:media_type] = 'VIDEO'
- cURL
curl --location --request POST 'https://graph.facebook.com/v12.0/123456/media?access_token=access_token&caption=test&image_url=https://site.ru/image.jpg'
- Ответ
{ "id": "19162258963110160" } # id контейнера
Статус контейнера
URL для отправки сообщения:
# CONTAINER_ID - id контейнера который получили в предыдущем шаге
url = "https://graph.facebook.com/#{GRAPH_API_VERSION}/#{CONTAINER_ID}"
Параметры:
{
access_token: ACCESS_TOKEN,
fields: 'status_code'
}
cURL:
curl --location --request GET 'https://graph.facebook.com/v12.0/19162258963110160?access_token=access_token&fields=status_code'
Ответ:
{ "status_code": "FINISHED", "id": "19162258963110160" }
Возможные статусы:
- EXPIRED - Контейнер не был опубликован в течение 24 часов, и срок его действия истек.
- ERROR - Контейнеру не удалось завершить процесс публикации.
- FINISHED - Контейнер и его медиа-объект готовы к публикации.
- IN_PROGRESS - Контейнер все еще находится в процессе публикации.
- PUBLISHED - Медиа-объект контейнера опубликован.
Публикация контейнера
URL для отправки сообщения:
# CONTAINER_ID - id контейнера который получили в предыдущем шаге
url = "https://graph.facebook.com/#{GRAPH_API_VERSION}/#{CLIENT_ID}/media_publish"
Параметры:
{
access_token: ACCESS_TOKEN,
creation_id: CONTAINER_ID
}
cURL:
curl --location --request POST 'https://graph.facebook.com/v12.0/123456/media_publish?access_token=access_token&creation_id=19162258963110160'
Ответ:
# id опубликованного поста
{
"id": "19162258963110160"
}