Есть приложение на Qt, предназначенное для аплоада фото/видео в соц. сети (в том числе и FB). Сейчас работает на старой версии Api (2.1), отсюда ограничения на размер файла в 1гб и регулярные HTTP 504. Так что стоит задача перевести его на v2.3 с возобновляемыми закачками.
Авторизацию я прохожу успешно. Инит закачки - тоже, получаю все необходимые параметры. Но загрузка первой же чанки заканчивается следующей ошибкой:
{"error":{"message":"Service temporarily unavailable","type":"FacebookApiException","is_transient":true,"code":2,"error_subcode":1363030,"error_user_title":"Video Upload Time Out","error_user_msg":"Your video upload timed out before it could be completed. This is probably because of a slow network connection or because the video you're trying to upload is too large. Please try again."}}
В качестве связи я уверен. Чанка имеет размер 1мб (пробовал загружать файлы меньше - чанка меньше, результат тот-же). Так что всё не так очевидно.
Вот кусок кода, отправляющий чанку (над ним я уже долго колдую, так что выглядит страшновато)
QNetworkRequest request;
request.setUrl(QUrl(QString("https://graph-video.facebook.com/v2.3/me/videos")));
QHttpMultiPart *body = new QHttpMultiPart(QHttpMultiPart::FormDataType);
_file = new QFile(filename);
_file->open(QIODevice::ReadOnly);
QHttpPart tokenPart, phasePart, sessionPart, offsetPart, dataPart;
tokenPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"access_token\""));
tokenPart.setBody(accessToken.toUtf8());
phasePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload_phase\""));
phasePart.setBody(phaseTransfer.toUtf8());
sessionPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload_session_id\""));
sessionPart.setBody(_sessionId.toUtf8());
offsetPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"start_offset\""));
offsetPart.setBody(QString::number(_startOffset).toUtf8());
QHttpPart dataPart;
dataPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"video_file_chunk\""));
QByteArray data = _file->read(_endOffset - _startOffset);
dataPart.setBody(data);
body->append(tokenPart);
body->append(phasePart);
body->append(offsetPart);
body->append(sessionPart);
body->append(dataPart);
_server->post(request, body);
Описание, по которому делаю, вот:
https://developers.facebook.com/docs/graph-api/vid...
Может, кто сталкивался с подобным или даже имеет рабочий пример? Буду благодарен любой помощи.