微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oauth_problem=signature_invalid , Auoth 1.0 PUT 请求

如何解决oauth_problem=signature_invalid , Auoth 1.0 PUT 请求

我正在尝试使用 ETSY api 进行 api 调用以更新列表库存。

我收到此错误:oauth_problem=signature_invalid&debug_sbs=PUT

我的代码是:

views::iota(0u,days_in_month.size())
   | views::for_each([&](int month){
         return views::repeat_n(month+1,days_in_month[month])
     })

我的代码中是否缺少任何内容

解决方法

Etsy API 要求 oauth 参数包含在帖子正文中,而不是标题中。文档对此不是很清楚,但有点暗示它(https://www.etsy.com/developers/documentation/getting_started/oauth#section_authorized_put_post_requests

因此您的请求调用应如下所示:

./this:that

一个很好的调试这类问题的工具是 Postman (https://www.postman.com/)。我就是这样找到这个问题的。

编辑:

如果请求在 Postman 中工作,但您仍然无法在您的代码中工作,那么您可以稍微分解该过程。通过调用 oauth 对象上的 nonce、timestamp 和 signature 方法手动构建 oauth 参数。

request({
    url: request_data.url,method: request_data.method,form: oauth.authorize(request_data,token)
},function (error,response,body) {
    console.log(response.body)
});

我在我的代码中发现在启动 oauth 对象时我错误地命名了 consumer.secret 变量。所以消费者的秘密是空的,因此签名是错误的。

另外,尝试一个更简单的 PUT 调用来测试您的基本 PUT 请求是否有效。我正在执行 let oauth_data = { oauth_consumer_key: api_key,oauth_nonce: oauth.getNonce(),oauth_signature_method: "HMAC-SHA1",oauth_timestamp: oauth.getTimeStamp(),oauth_version: "1.0",oauth_token: access_token }; //now generate the signature using the request data and the oauth object //you've just created above let signature = oauth.getSignature(request_data,token_secret,oauth_data); //now add the signature to the oauth_data paramater object oauth_data.oauth_signature = signature; //merge two objects into one let formData = Object.assign({},oauth_data,request_data.params); request({ url: request_data.url,form: formData },body) { console.log(response.body) }); 来更新商店标题(您实际上可以将其更新为现有标题,因此不会更改任何内容),它只需要您的商店 ID 和标题字符串。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。