我尝试使用graph-api v2.3和qNetworkAccessManager将视频上传到facebook。我成功通过授权并开始上传过程,但上传第一个块以http错误500和facebook api错误代码1363030结束。 它看起来就像fb服务器是不可用的,但旧api(2.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);
也许有人知道解决方案或只是有一个graph-api v2.3的工作样本?
答案 0 :(得分:3)
在Node.js中点击这个,希望能节省一些时间。
如果您未指定附件的内容类型和/或文件名,则会出现此Facebook错误。不确定是否只有其中一个或两个都很重要。
更新标题说:
Content-Disposition: form-data; name="source"; filename="video.mp4"
Content-Type: video/mp4
它会正常工作。
(如果有人来这里寻找JavaScript代码,see this answer以获取一些示例。)
答案 1 :(得分:0)
我遇到了图api v2.8 postman的同样问题。
在我的情况下,我提供视频文件但不提供'source'
参数。
我这样解决了。 发布网址应该像
https://graph-video.facebook.com/v2.8/{user-id}/videos?access_token={token}
在邮递员身体部位,选择表格数据单选按钮,然后选择type=file
在邮递员的source={Choose Video file}
身体部分提供form-data
参数。