拒绝访问请求的资源403 SP-API AMAZON-C#

问题描述

调用新的SP-API AMAZON的问题。我正在使用Amazon提供的C#库。

https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp

资源api:https://sandbox.sellingpartnerapi-na.amazon.com/orders/v0/orders

{
    "errors": [
        {
            "message": "Access to requested resource is denied.","code": "Unauthorized","details": ""
        }
    ]
}

解决方法

我遇到了同样的错误,经过几天的努力,我找到了我的解决方案,希望它可以帮助其他人。

我遵循了 Selling Partner API Developer Guide 中的每一步,但是,在亚马逊卖家中心中创建应用程序时,我使用了用户 ARN。这是我的错误。为了解决这个问题,我使用 Rol ARN 而不是用户 ARN 创建了一个新应用。

像这样: enter image description here

,

我写了这篇博文,描述了成功的 Amazon SP-API 身份验证和身份验证流程的所有步骤。希望你能通过阅读获得一些见解。

https://marco-tibaldeschi.medium.com/amazon-sp-api-auth-auth-demystified-ab3bc746729b

,

您必须检查以下标题,此错误可能是由于其中任何一个的值不正确造成的。

  1. 在标头中,您需要发送 x-amz-access-token,即仅在通过令牌 API 生成一小时后有效。
  2. 如果您在授权中选择 AWS 签名类型并设置以下密钥(访问密钥、秘密密钥、Aws 区域和服务名称)。

还要测试沙盒获取订单 API:URL 值应该是这个 https://sandbox.sellingpartnerapi-eu.amazon.com/orders/v0/orders?CreatedAfter=TEST_CASE_200&MarketplaceIds=XXXX

Sandbox API 将仅按照提供的沙箱行为工作。

,

看起来关于添加角色的文档指南似乎不起作用(或者我以某种方式搞砸了)。解决方法是根据 phamanh195 建议直接向用户添加策略:

IAM 管理控制台 => 用户 => 选择用户 => 添加内联策略 => 单击 JSON 选项卡 => 添加以下内容:

{
"Version": "2012-10-17","Statement": [
{
"Effect": "Allow","Action": "execute-api:Invoke","Resource": "arn:aws:execute-api:::*"
}
]
}

感谢这不是最佳实践,但我现在可以访问。

附言我已删除该策略,它已默认返回到上面的授权错误。

参考下面在 github 上报告的问题:https://github.com/amzn/selling-partner-api-docs/issues/38

,

只是把它扔在那里,我得到了很多次这个错误,我 100% 确定一切都是正确的,最后这只是我使用的是 post 而不是 get。疲惫的眼睛,但我终于抓住了它,它奏效了。