API Resumable Upload позволяет загружать большие файлы в социальный граф Meta и возобновлять прерванные сеансы загрузки без необходимости начинать этот процесс заново. После загрузки файл можно опубликовать.
Ссылки для конечных точек, которые поддерживают дескрипторы загруженных файлов, укажут, поддерживают ли конечные точки дескрипторы, возвращаемые API Resumable Upload.
Это руководство написано с расчетом, чтобы вы прочли статью Обзор API Graph и руководства Meta по разработке, а также выполнили все действия, необходимые для разработки на платформе Meta.
Вам понадобится:
pdf
jpeg
jpg
png
Чтобы начать сеанс загрузки, отправьте запрос 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>" }
Чтобы начать загрузку файла, отправьте запрос 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. Это позволит возобновить загрузку с момента ее прерывания.