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

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. Это позволит возобновить загрузку с момента ее прерывания.

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