Twitter API POST媒体/上传(块)错误“未find”

为什么当我添加它返回的分块数据

“{”request“:”/ 1.1 / media / upload.json“,”error“:”未find。“}”?

FINALIZE它返回:

“{”errors“:[{”message“:”对不起,那个页面不存在“,”code“:34}]}”

var CHUNK_SIZE = 1024, buffer = new Buffer(CHUNK_SIZE), filePath = './web.mp4', data, segment_index, media = null; async.series([ function (callback) { request.post({ url: "https://upload.twitter.com/1.1/media/upload.json", oauth: oauth, host: "upload.twitter.com", protocol: "https:", formData: { command: "INIT", media_type: 'video/mp4', total_bytes: 854429 } }, function requestCallback(err, res, body) { media = body; segment_index = 0; callback(); }); }, function (callback) { var fd = fs.openSync(filePath, 'r'); var nread = fs.readSync(fd, buffer, 0, CHUNK_SIZE, null); if (nread === 0) { } else { if (nread < CHUNK_SIZE) { data = buffer.slice(0, nread); } else { data = buffer; } request.post({ url: "https://upload.twitter.com/1.1/media/upload.json", oauth: oauth, host: "upload.twitter.com", protocol: "https:", formData: { command: "APPEND", media_id: JSON.parse(media).media_id, segment_index: segment_index, media: data.toString('base64') }, headers: { 'Content-Transfer-Encoding': 'base64' } }, function requestCallback(err, res, body) { if (err) { throw err; } }); } callback(); } ], function (err) { if (err) return null; }); 

这段代码是为了testing目的,我读了第一个1024块,看看API响应是否正确。

谢谢 !

你的INIT呼叫有什么回应?

APPEND电话中的NOT_FOUNDexception意味着您提供的媒体ID无法find。 这将表明INIT呼叫没有成功。

我没有在这里看到你的FINALIZE代码,但是这个错误可能是由于调用INIT中一个不完整的上传失败的结果。

我在这里有一个shell脚本来演示整体stream程(不是为了生产,只是testing和演示的目的):

https://gist.github.com/brandonblack/bb3feaff9f0a2cad2d74

我们也应该很快在Ruby API SDK中实现这个function。 随意遵循这个问题,它可能是一个很好的参考实现:

https://github.com/twitterdev/twitter-ruby-ads-sdk/issues/7

我相信你的问题可能在这里:

JSON.parse(media).media_id

尝试:

JSON.parse(media).media_id_string