簡體   English   中英

無法使用 nodejs 將媒體發布到 twitter api

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM