1

尝试使用 ETSY 列表图像 API 上传列表图像

我正在从前端部分获取“image_id”和“image”。

var request = require("request");

var options = { method: 'POST',
             url: 'https://openapi.etsy.com/v2/listings/724108136/images',
             qs: { oauth_consumer_key: '*********************',
                   oauth_token: '****************',
                   oauth_signature_method: 'HMAC-SHA1',
                   oauth_timestamp: '**********',
                   oauth_nonce: '*************',
                   oauth_version: '1.0',
                   oauth_signature: '*********************' 
                   },
                   headers:{
                        'Content-Type': 'multipart/form-data'
                   },
                   encoding: null,
                   responseType: 'buffer',
                   data:{
                      image_id:req.body.image_id,
                      image:req.files.image
                   }
                };
request(options, function (error, response, body) {
     if (error) throw new Error(error);
      console.log(body) // Image file or image_id string must be included  
  });
4

1 回答 1

1

我认为这有一些问题。

  1. 看起来您正在通过查询字符串而不是标题中传递 OAuth 信息。

  2. 您可能想提高您的请求版本。我已经确认这适用于“请求”:“^2.88.2”,

`

const request = require("request");

let options = {
    'method': 'POST',
    'url': 'https://openapi.etsy.com/v2/listings/724108136/images',
    'headers': {
        'Authorization': 'OAuth oauth_consumer_key="********",oauth_token="***********",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1585021862",oauth_nonce="*******",oauth_version="1.0",oauth_signature="********"',
        'Content-Type': 'multipart/form-data'
    },
    formData: {
        'image': {
                'value': fs.createReadStream('./temp/abc123.jpg'),
                'options': {
                    'filename': 'my-shirt.jpg',
                    'contentType': null
                }
            }
    }
};  

request(options, function (error, response, body) {
     if (error) throw new Error(error);
      console.log(body)
});

`

于 2020-03-25T19:55:25.817 回答