如何用C#调用Amazon API获取商品信息?解决权限及库调用问题
解决Amazon商品信息API开发问题及完整流程
先解决你的核心错误
你遇到的"The Access Key Id AKI.......TN7 is not enabled for accessing Product Advertising API."错误,根源是你用的是普通AWS IAM用户的密钥,而不是Amazon Associates(亚马逊联盟)专属的Product Advertising API密钥。Product Advertising API不属于常规AWS服务,必须通过亚马逊联盟账号申请开通,才能生成合法的调用密钥。
完整开发流程
1. 开通Product Advertising API权限
- 注册Amazon Associates(亚马逊联盟)账号,完成审核(需填写网站/APP信息、合规声明等,不同区域要求略有差异)
- 审核通过后,在联盟后台找到「Product Advertising API」入口,生成专属的
Access Key和Secret Key(这组密钥和普通AWS IAM密钥完全不同) - 同时记录你的联盟
Tracking ID(必须在API请求中携带,否则会被拒绝) - 确认账号对应的区域(比如北美站对应
us-east-1,欧洲站对应eu-west-1,日本站对应ap-northeast-1等)
2. 安装Nager.AmazonProductAdvertising库
通过NuGet安装:
Install-Package Nager.AmazonProductAdvertising
或者在Visual Studio的NuGet包管理器中搜索安装。
3. 正确调用API的C#示例
以下是根据ASIN获取商品价格、标题等信息的最简代码:
using Nager.AmazonProductAdvertising; using Nager.AmazonProductAdvertising.Model; var accessKey = "你的联盟Access Key"; var secretKey = "你的联盟Secret Key"; var trackingId = "你的联盟Tracking ID"; var region = AmazonEndpoint.US; // 根据目标区域调整,比如AmazonEndpoint.EU、AmazonEndpoint.JP var client = new AmazonProductAdvertisingClient(accessKey, secretKey, trackingId, region); try { var request = new ItemLookupRequest { ItemId = new List<string> { "B07VGRJDFY" }, // 替换成要查询的ASIN ResponseGroup = new List<ResponseGroup> { ResponseGroup.Large } // 指定返回信息范围,Large包含价格、标题、描述等 }; var response = await client.ItemLookupAsync(request); if (response.Items != null && response.Items.Any()) { var item = response.Items.First().Item.First(); Console.WriteLine($"商品标题: {item.ItemAttributes.Title}"); Console.WriteLine($"当前价格: {item.OfferSummary.LowestNewPrice.FormattedPrice}"); // 其他信息可从item对象中按需获取 } else { Console.WriteLine("未找到对应ASIN的商品信息"); } } catch (AmazonProductAdvertisingException ex) { Console.WriteLine($"API调用错误: {ex.Message}"); Console.WriteLine($"错误代码: {ex.ErrorCode}"); }
4. 常见问题排查
- 返回空值或错误:检查ASIN是否属于当前区域的亚马逊商品(比如美国ASIN不能用欧洲区域的API查询);确认Tracking ID、密钥、区域三者匹配
- 限流问题:Product Advertising API有调用次数限制(不同联盟等级额度不同),避免高频连续调用,建议添加请求间隔
- 权限问题:如果仍提示密钥无效,检查联盟账号是否正常(未被封禁),密钥是否在联盟后台正确生成
内容的提问来源于stack exchange,提问作者emrahkaracam
相关产品推荐
相关产品推荐

