Tod*_*ddT 5 amazon-web-services amazon-mws amazon-selling-partner-api
只需发送以下信息:sellingPartnerId、developerId 和 mwsAuthToken
我这样做是httparty这样的:
query = {
sellingPartnerId: "A3Kxxxxx",
developerId: "753xxxx",
mwsAuthToken: "amzn.mws.8abxxxxx-xxxx-xxxx-xxxx-xxxxxx",
}
Run Code Online (Sandbox Code Playgroud)
进而
send = HTTParty.get("https://sellingpartnerapi-na.amazon.com/authorization/v1/authorizationCode",
query: query
)
Run Code Online (Sandbox Code Playgroud)
这将返回以下错误:
{"errors"=>
[{"message"=>"Access to requested resource is denied.",
"code"=>"MissingAuthenticationToken"}]}
Run Code Online (Sandbox Code Playgroud)
我已经对我见过的所有通话进行了调整。我读过以下文章: 这 这
翻阅了 github 上关于此 API 的 695 个问题,仍然没有运气。我已经将查询调整为这个,但也没有运气:
query = {
grant_type: "client_credentials",
sellingPartnerId: "A3K98Oxxxxxx",
developerId: "753xxxxxxxx",
mwsAuthToken: "amzn.mws.8abxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx",
client_id: "amzn1.application-oa2-client.xxxxxxxxxxxxxxxxxxxxxxxx",
client_secret: "a473e76XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
scope: "sellingpartnerapi::migration"
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的任何方法都不起作用..有什么建议吗?有人真正成功地将 MWS 迁移到 SP-API 凭证吗?
不幸的是,您链接到的特定亚马逊文档并没有讲述整个故事。authorizationCode为了获得您正在寻找的响应,您还需要满足一些其他要求:
您需要来自 Amazon 的 OAuth API(完全不同的 API)的访问令牌。您可以为此使用工作流程,grantless因为在您的情况下,用户尚未实际授权 SP-API:
POST https://api.amazon.com/auth/o2/token
body: {
grant_type: 'client_credentials',
scope: 'sellingpartnerapi::migration',
client_id: 'amzn1.application-oa2-client.xxxxxxxxxxxxxxxxxxxxxxxx',
client_secret: 'a473e76XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
}
Run Code Online (Sandbox Code Playgroud)
这将返回access_token您实际迁移请求所需的https://sellingpartnerapi-na.amazon.com/authorization/v1/authorizationCode. 响应将类似于:
{
"access_token": "Atc|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"scope": "sellingpartnerapi::migration",
"token_type": "bearer",
"expires_in": 3600
}
Run Code Online (Sandbox Code Playgroud)
重要提示:从该响应中获取access_token值并将其作为x-amz-access-token标头添加到您的/authorization/v1/authorizationCode请求中。
这是您收到的错误背后的实际原因。未签名的请求将不包含系统提示您输入的“授权令牌”。
您需要使用 Amazon 的SigV4签名机制来签署您的请求。看起来您正在使用 Ruby (HTTParty),因此您可以使用 的aws-sdkAws ::Sigv4::Signer来实现此目的。您需要按照通用开发人员指南中所述设置 IAM 凭证,并以某种方式向您提供这些凭证Aws::Sigv4::Signer(硬编码、环境变量、Aws::SharedCredentials等)
请求签名将导致一些专有标头添加到您的请求中。完成此操作后,您应该拥有成功发出请求所需的一切。
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |