Facebook Graph Api

Facebook Graph Api

Что такое 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" 
}