【问题标题】:How do we resolve "Access to requested resource is denied" on getOrders operation of Amazon Selling Partner API?我们如何解决 Amazon Selling Partner API 的 getOrders 操作中的“访问请求的资源被拒绝”?
【发布时间】:2022-08-03 07:53:08
【问题描述】:

发送时我收到以下信息获取订单按照https://developer-docs.amazon.com/sp-api/docs/connecting-to-the-selling-partner-apihttps://developer-docs.amazon.com/sp-api/docs/orders-api-v0-reference 提供的说明和示例后,通过 Postman 向 /orders/v0/orders 请求。

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

我们已经注册了一个自授权的应用客户端草稿附加了用户 ARN IAM 的状态,如 https://developer-docs.amazon.com/sp-api/docs/registering-your-application 中所述。

我已经检查了 ARN IAM 的内联和角色策略。它们与https://developer-docs.amazon.com/sp-api/docs/creating-and-configuring-iam-policies-and-entities#step-4-create-an-iam-role 中的描述完全相同。

我们能够按照https://developer-docs.amazon.com/sp-api/docs/connecting-to-the-selling-partner-api#step-1-request-a-login-with-amazon-access-token 的文档成功请求 LWA 访问令牌。

使用 Postman 中的 AWS 签名版本 4 流程,我们能够按照https://developer-docs.amazon.com/sp-api/docs/orders-api-v0-reference 的文档向 /orders/v0/orders 发送请求。但是,我们得到了上面的 Unauthorized 响应。

有点不清楚是否获取订单操作需要 RDT,因为它在此处列出 https://developer-docs.amazon.com/sp-api/docs/tokens-api-use-case-guide#restricted-operations。但是,然后在https://developer-docs.amazon.com/sp-api/docs/tokens-api-use-case-guide#step-1-get-an-order-id,它解释说您需要一个订单 ID 才能获取 RDT 并致电获取订单获取订单 ID 列表,然后获取特定订单 ID 的 RDT,然后将 RDT 用于后续调用,例如获取订单项.所以,在我看来,最初获取订单呼叫应该/不需要 RDT。

因此,尚不清楚还需要做什么来解决来自获取订单手术。

有没有其他人解决了这个问题?我们已经通过 Amazon 开发人员支持打开了几个支持案例,只是为了关闭案例,并使用从我上面引用的页面复制的模板回复。

    标签: amz-sp-api amazonsellercentral selling-partner-api amazon-sp-api


    【解决方案1】:

    在这个问题上您还需要帮助吗?如果是这样,这里有一些可能的问题: --假设您在申请时已获准直接向消费​​者运送

    1.) 是的,您确实需要一个用于 getOrders 的 RDT。 2.) 获取 RDT 时应提供以下信息:

    获取 RDT 的 POST 正文应包括:

    “targetApplication”:您的应用程序 ID(来自卖家中心 -> 开发应用程序 -> 应该看起来像 amzn1.sp.solution.(更多字符))

    所以主体在 json 格式中应该是这样的:

    {
       "targetApplication":"amzn1.sp.solution.askdeqevfjaiv",
       "restrictedResources":[
          {
             "method":"GET",
             "path":"/orders/v0/getOrders",
             "dataElements":[
                "shippingAddress"
             ]
          }
       ]
    }
    

    当您是具有自我授权的私有应用程序时,需要 targetApplication。我知道这不在文档中。如果没有包含目标应用程序,则可以获得 RDT,但它无法工作。

    3.)您似乎是一个私人应用程序,打算保持草稿状态。 如果是这样,请确保是这种情况:

    3a.) 确保您的应用程序注册到 USER ARN 而不是文档建议的角色 ARN。

    3b.) 确保您没有附加到该用户的策略或角色。

    3c.) 向用户添加内联策略。进入 JSON 选项的页面如下

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

    如果您必须更改您的 ARN,则必须生成一个使用新的刷新令牌。

    如果您有一个成功的 RDT TOKEN,那么以下可能是一个问题:

    获取订单的请求至少需要以下查询字符串参数:

    为您的应用请求 getOrders 需要(CreatedAfter 或 LastUpdatedAfter) 和 MarketplaceIds它们还必须按字符代码的顺序排列。在这种情况下,CreatedAfter 然后是 MarketplaceIds CreatedAfter 必须采用 ISO 8601 格式。 可以在这里找到市场 ID:https://developer-docs.amazon.com/sp-api/docs/marketplace-ids

    另一种可能性是您在错误的地方使用了错误的键 IE:

     "lwaClientId" => "<LWA client ID>", from seller central
        "lwaClientSecret" => "<LWA client secret>",from seller central
        "lwaRefreshToken" => "<LWA refresh token>", from seller central
        "awsAccessKeyId" => "<AWS access key ID>", the IAM USER
        "awsSecretAccessKey" => "<AWS secret access key>", from IAM USER
    

    如果这些都不起作用,请告诉我。我已经解决了很多 SP-API 问题。

    【讨论】:

      【解决方案2】:

      公里麦康奈尔 你能告诉我如何在订单API中获取买家信息吗? 是否需要 PII 访问操作系统?

      【讨论】:

        猜你喜欢
        • 2021-02-10
        • 2022-08-05
        • 1970-01-01
        • 2017-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        • 1970-01-01
        相关资源
        最近更新 更多