【发布时间】:2019-12-12 10:48:14
【问题描述】:
好的,所以我有一个快递服务器,我用它来使用media/upload将图片发布到 Twitter。
app.post('/api/post-picture', (req, res) =>{
client.post('media/upload', {"media": data}, // Here lies the problem
function(error, media, response) {
if (!error) {
client.post('statuses/update', {
status: 'TEST PICTURE',
media_ids: media.media_id_string
}, function(error, tweet, response){
if(!error){
res.json({status: 'success'})
}else{
res.json({error: response})
}
})
}else{
res.json({error: response})
}
});
});
在我的req.body.media 中,我有一个base64 编码的字符串,我将它发送到我的快递服务器。然后,我获取 base64 编码的图像,并将其转换回原始二进制数据:"
var buf = Buffer.from(req.body.media, 'base64');
然后我将 buf 变量传递给
client.post('media/upload', {"media": buf},
由于某些奇怪的原因,twitters api 说它无法识别该媒体类型: 确切的错误信息:
"body": "{\"request\":\"\\/1.1\\/media\\/upload.json\",\"error\":\"media type unrecognized.\"}"
他们的 api 说:“媒体应该是正在上传的原始二进制文件内容”
我在这里做错了什么?
https://developer.twitter.com/en/docs/media/upload-media/api-reference/post-media-upload.html
工作代码sn-p:
app.post('/api/post-picture', (req, res) =>{
// var encodedimage = Buffer.from(data).toString('base64')
var buf = Buffer.from(req.body.media.toString(), 'base64');
client.post('media/upload', {"media": buf},
function(error, media, response) {
if (!error) {
client.post('statuses/update', {
status: 'TEST PICTURE',
media_ids: media.media_id_string
}, function(error, tweet, response){
if(!error){
res.json({status: 'success'})
}else{
res.json({error: response})
}
})
}else{
res.json({error: response})
}
});
});
Twitters api 也接受 base64 编码的字符串,但我也提供了它,它也会对我产生错误。
【问题讨论】:
标签: node.js express twitter base64