[英]Cant post media to twitter api using nodejs
好的,所以我有一個快速服務器,我用它來使用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
工作代碼片段:
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 編碼的字符串,但我也提供了它,它也會出錯。
data:image/jpeg;base64
需要從數據中刪除,以便 twitter 接受它,這在他們的 api 上沒有任何記錄。
你可以這樣做
var base64Data = encodedImage.replace(/^data:image\\/jpg;base64,/, "");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.