You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决亚马逊SP-API调用时的“Access to requested resource is denied”错误

排查亚马逊SP-API competitivePrice接口权限拒绝问题

以下是针对Unauthorized错误的实用排查步骤,都是实际调用该接口时踩过的坑:

  • 直接排除Vendor账户:products/pricing/v0/competitivePrice属于Seller SP-API接口,VendorCentral账户完全无法访问,不用再尝试Vendor相关凭证。

  • 确认应用权限范围(Scope):

    • 登录Seller Central,进入「Apps and Services」→「Manage Your Apps」,找到你创建的SP-API应用。
    • 查看授权权限列表,必须包含product_pricing:read。如果没有,需要重新授权应用,勾选该权限后生成新的刷新令牌(Refresh Token)。
  • IAM角色配置必须正确:

    • 必须使用IAM角色ARN,不能用IAM用户ARN。SP-API服务依赖AssumeRole获取权限,用户ARN无法被SP-API信任。
    • 检查IAM角色的信任关系,必须包含sellingpartnerapi.amazonaws.com作为可信实体,策略示例:
      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "sellingpartnerapi.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      
    • 确保SP-API开发者控制台中,应用关联的IAM ARN是该角色的ARN,没有填错。
  • 验证LWA令牌的有效性和权限:

    • 用应用Client ID、Client Secret和Refresh Token调用LWA的/oauth2/token接口获取Access Token。
    • 用JWT解码工具查看Access Token的payload,确认scope字段包含product_pricing:read,且exp字段未过期。
  • 必须做AWS签名:

    • SP-API接口除了需要x-amz-access-token请求头(存放LWA的Access Token),还必须完成AWS Signature Version 4签名。
    • 签名需使用通过AssumeRole获取的临时AWS凭证(AccessKeyId、SecretAccessKey、SessionToken),不能用IAM用户的永久密钥。
    • Postman中可配置AWS签名:在「Authorization」选项卡选择「AWS Signature」,填入临时凭证,服务名称填sellingpartnerapi,区域选us-east-1(北美站)。
  • 确认ASIN与店铺的关联状态:

    • 若查看自身店铺的ASIN,需确认该ASIN确实属于你授权的Seller账户北美站店铺。
    • 若查看竞品ASIN,确保你的账户未被限制访问竞争定价数据,且店铺状态正常(未暂停、未关闭)。
  • 检查请求参数与头:

    • 确认MarketplaceId=ATVPDKIKX0DER是北美站的正确ID,无拼写错误。
    • 请求头需包含Content-Type: application/json,即使是GET请求。

内容的提问来源于stack exchange,提问作者Chris Jukes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:20:36