API Resumable Upload позволяет загружать большие файлы в социальный граф Meta и возобновлять прерванные сеансы загрузки без необходимости начинать этот процесс заново. После загрузки файл можно опубликовать.
Ссылки для конечных точек, которые поддерживают дескрипторы загруженных файлов, укажут, поддерживают ли конечные точки дескрипторы, возвращаемые API Resumable Upload.
Это руководство написано с расчетом, чтобы вы прочли статью Обзор API Graph и руководства Meta по разработке, а также выполнили все действия, необходимые для разработки на платформе Meta.
Вам понадобится:
pdfjpegjpgpngmp4Чтобы начать сеанс загрузки, отправьте запрос 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/v24.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/v24.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/v24.0/upload:<UPLOAD_SESSION_ID>" --header "Authorization: OAuth <USER_ACCESS_TOKEN>"В случае успеха вы получите ответ JSON, содержащий значение file_offset. Его можно использовать для возобновления сеанса загрузки с того момента, когда он был прерван.
{
"id": "upload:<UPLOAD_SESSION_ID>"
"file_offset": "<FILE_OFFSET>"
}Отправьте ещё один запрос POST подобно отправленному на шаге 2, но задайте для параметра file_offset только что полученное значение file_offset. Это позволит возобновить загрузку с момента ее прерывания.
curl -i -X POST "https://graph.facebook.com/v24.0/upload:<UPLOAD_SESSION_ID>" --header "Authorization: OAuth <USER_ACCESS_TOKEN>" --header "file_offset: <FILE_OFFSET>" --data-binary @<FILE_NAME>