亚马逊SP API Listings Items接口调用返回403 Unauthorized权限错误求助
兄弟,我之前踩过SP API权限的大坑,结合你的情况给你梳理几个必查的方向:
先核对权限范围(Scopes)是否匹配
订单API和商品/库存类API需要的权限完全不一样!你能调用订单接口说明订单相关的权限是没问题的,但Catalog Items或者Listings Items这类接口需要对应的权限(比如catalog_items_read、listings_items_write或者inventory_read/inventory_write,具体看你实际要做的操作)。你得回去检查:- 创建IAM角色时,附加的权限策略里有没有包含目标API的权限
- 生成Access Token时,请求的scope参数是否包含了对应权限(比如如果是读商品目录就要加
https://sellingpartnerapi-xxx.amazon.com/catalog_items_read)
可以把你的Access Token用JWT解码工具(本地就能用的那种)打开,看看里面的scope字段有没有对应的权限项,如果没有,那肯定是授权环节漏了。
检查权限申请的审核状态
你提到正在等访问表单的验证,这点很关键!亚马逊SP API里部分接口属于「受限权限」,比如商品目录、批量 listings 操作这类,必须通过申请审核才能拿到访问权限。如果你的申请还在pending状态,就算令牌里有scope,也会被返回403。建议去卖家后台的「SP API权限管理」里看看申请进度,或者联系亚马逊卖家支持确认审核状态。确认接口和参数是否正确
你说要更新自己的库存,但你调用的是/catalog/2020-12-01/items这个Catalog Items接口——这个接口是用来获取公共商品目录信息的,不是用来更新你自己店铺的库存的!如果要更新库存,应该用Inventory API(端点比如/inventory/2021-08-01/items)或者Listings Items API(如果是更新商品 listings 信息的话)。调用错接口也可能导致权限不匹配的错误,先确认你用的接口是不是对应你要做的操作。核对端点域名和Marketplace ID
确保{{host}}是对应你店铺所在区域的正确域名(比如北美站是sellingpartnerapi-na.amazon.com,欧洲站是sellingpartnerapi-eu.amazon.com),还有{{marketplaceId}}和你的店铺所在市场完全匹配,比如美国站是ATVPDKIKX0DER,英国站是A1F83G8C2ARO7P,填错的话也可能触发权限错误。
先按这几个方向排查,大概率能找到问题!
备注:内容来源于stack exchange,提问作者JaviFrances

