Публикация

С помощью Video API можно публиковать видео и видео Reels на Страницах Facebook.

Требования

Чтобы опубликовать видео на Странице, вам понадобятся:

  • Маркер доступа к Странице, запрошенный пользователем, который может выполнять действие CREATE_CONTENT на этой Странице.
  • Человек, запрашивающий маркер, во время входа через Facebook должен дать вашему приложению доступ к следующим разрешениям:
  • Дескриптор видео.
    • Вы получите его, когда загрузите свой видеофайл на серверы Meta с помощью Resumable Upload API.

Публикация видео

Чтобы опубликовать видео, отправьте запрос POST к конечной точке /<PAGE_ID>/videos:

curl -X POST \
  "https://graph-video.facebook.com/v21.0/<PAGE_ID>/videos" \
  -F "access_token=<PAGE_ACCESS_TOKEN>" \
  -F "title=<VIDEO_TITLE>" \
  -F "description=<VIDEO_DESCRIPTION>" \ 
  -F "fbuploader_video_file_chunk=<UPLOADED_FILE_HANDLE>"

В случае успеха приложение получит ответ JSON, содержащий ID видео.

{
  "id":"<VIDEO_ID>"
}

Загрузка видеофайла

Следующий контент взят из документации по Resumable Upload API.

Загрузка файла

API Resumable Upload позволяет загружать большие файлы в социальный граф Meta и возобновлять прерванные сеансы загрузки без необходимости начинать этот процесс заново. После загрузки файл можно опубликовать.

Ссылки для конечных точек, которые поддерживают дескрипторы загруженных файлов, укажут, поддерживают ли конечные точки дескрипторы, возвращаемые API Resumable Upload.

Прежде чем начать

Это руководство написано с расчетом, чтобы вы прочли статью Обзор API Graph и руководства Meta по разработке, а также выполнили все действия, необходимые для разработки на платформе Meta.

Вам понадобится:

  • ID приложения Meta;
  • файл в одном из следующих форматов:
    • pdf
    • jpeg
    • jpg
    • png
  • маркер доступа пользователя.

Шаг 1. Начните сеанс загрузки

Чтобы начать сеанс загрузки, отправьте запрос POST к конечной точке /<APP_ID>/uploads, подставив вместо <APP_ID> ID вашего приложения Meta, и укажите следующие обязательные параметры:

  • file_name — имя вашего файла;
  • file_length — размер файла в байтах;
  • file_type — тип MIME файла. Допустимые значения: application/pdf, image/jpeg, image/jpg, image/png и video/mp4.

Синтаксис запроса

Для удобства чтения применено форматирование.

curl -i -X POST "https://graph.facebook.com/v21.0/<APP_ID>/uploads
  ?file_name=<FILE_NAME>
  &file_length=<FILE_LENGTH>
  &file_type=<FILE_TYPE>
  &access_token=<USER_ACCESS_TOKEN>"

В случае успеха приложение получит ответ JSON, содержащий ID сеанса загрузки.

{
  "id": "upload:<UPLOAD_SESSION_ID>"
}

Шаг 2. Начните загрузку

Чтобы начать загрузку файла, отправьте запрос POST к конечной точке /upload:<UPLOAD_SESSION_ID>, установив для параметра file_offset значение 0.

Синтаксис запроса

curl -i -X POST "https://graph.facebook.com/v21.0/upload:<UPLOAD_SESSION_ID>"
  --header "Authorization: OAuth <USER_ACCESS_TOKEN>"
  --header "file_offset: 0"
  --data-binary @<FILE_NAME>

Обязательно добавьте в заголовок маркер доступа, иначе запрос завершится ошибкой.

В случае успеха приложение получит дескриптор файла, который вы будете использовать в вызовах API для публикации файла на вашей конечной точке.

{
  "h": "<UPLOADED_FILE_HANDLE>"
}

Пример ответа

{
    "h": "2:c2FtcGxl..."
}

Возобновление прерванной загрузки

Если начатый вами сеанс загрузки выполняется дольше, чем ожидалось, или прерывается, отправьте запрос GET к конечной точке /upload:<UPLOAD_SESSION_ID> с шага 1.

Синтаксис запроса

Для удобства чтения применено форматирование.

curl -i -X GET "https://graph.facebook.com/v21.0/upload:<UPLOAD_SESSION_ID>"
  --header "Authorization: OAuth <USER_ACCESS_TOKEN>""

В случае успеха вы получите ответ JSON, содержащий значение file_offset. Его можно использовать для возобновления сеанса загрузки с того момента, когда он был прерван.

{
  "id": "upload:<UPLOAD_SESSION_ID>"
  "file_offset": <FILE_OFFSET>"
}

Используйте это значение file_offset в другом запросе POST, как вы делали на шаге 2. Это позволит возобновить загрузку с момента ее прерывания.

Дальнейшие действия