如何解决调用Amazon SP-API的问题,即使具有有效的令牌和签名,该API也会始终返回未经授权

如何解决如何解决调用Amazon SP-API的问题,即使具有有效的令牌和签名,该API也会始终返回未经授权

我仔细阅读了的使用指南,以进行设置以调用新的SP-API(https://github.com/amzn/selling-partner-api-docs/blob/main/guides/developer-guide/SellingPartnerApiDeveloperGuide.md),并在此过程中检查了所有api区域以授予访问权限(例如,订单,库存等) 。我正在使用Amazon(https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp)提供的C#库。我成功获取了访问令牌并成功签署了请求,但始终收到以下错误:对请求资源的访问被拒绝。 /未经授权,没有详细信息。我正在尝试对 / orders / v0 / orders 端点进行简单的获取。有什么想法我做错了吗?任何帮助将不胜感激!

下面是我的代码:

private const string MARKETPLACE_ID = "ATVPDKIKX0DER";

var resource = $"/orders/v0/orders";

var client = new RestClient("https://sellingpartnerapi-na.amazon.com");

IRestRequest restRequest = new RestRequest(resource,Method.GET);

restRequest.AddParameter("MarketPlaceIds",MARKETPLACE_ID,ParameterType.QueryString);

restRequest.AddParameter("CreatedAfter",DateTime.UtcNow.AddDays(-5),ParameterType.QueryString);



var lwaAuthorizationCredentials = new LWAAuthorizationCredentials

{

    ClientId = AMAZON_LWA_CLIENT_ID,ClientSecret = AMAZON_LWA_CLIENT_SECRET,RefreshToken = AMAZON_LWA_REFRESH_TOKEN,Endpoint = new Uri("https://api.amazon.com/auth/o2/token")

};



restRequest = new LWAAuthorizationSigner(lwaAuthorizationCredentials).Sign(restRequest);



var awsAuthenticationCredentials = new AWSAuthenticationCredentials

{

    AccessKeyId = AMAZON_ACCESS_KEY_ID,SecretKey = AMAZON_ACCESS_SECRET,Region = "us-east-1"

};



restRequest = new AWSSigV4Signer(awsAuthenticationCredentials).Sign(restRequest,client.BaseUrl.Host);

var response = client.Execute(restRequest);

解决方法

如果您的 sp 应用正在审核中,您也会收到此错误,让我发疯!

,

在我们的情况下,我们必须向我们定义为进行API调用的用户显式添加IAM策略。请查看下面的链接,并确认您调用API的用户已为其分配了策略:

https://github.com/amzn/selling-partner-api-docs/blob/main/guides/developer-guide/SellingPartnerApiDeveloperGuide.md#step-3-create-an-iam-policy

不知何故,我们两次进行了逐步设置,而错过了添加此显式策略的步骤。最初,我认为是按照说明将其添加为“内联”,但这似乎行不通。

,

如果您遵循SP-API指南,则创建了一个角色(这是您的应用程序向其注册的IAM ARN)和一个用户,该用户有权承担该角色进行API调用。

但是,指南尚不清楚的一件事是您不能直接使用该用户的凭据进行API调用。您必须首先使用用户的凭据(AMAZON_ACCESS_KEY_ID / AMAZON_ACCESS_SECRET)调用STS API的AssumeRole method,然后它将返回根据角色授权的临时凭据。在签署请求时使用那些临时凭据。

[][][4][][],[][][][][],[][][][][] 还将返回会话令牌,您必须在API调用中将其包含在名为AssumeRole的标头中。有关X-Amz-Security-Token的简要说明,请参见https://docs.aws.amazon.com/STS/latest/APIReference/CommonParameters.html

,

我不认为是重复问题,购买解决方案可能适用:https://stackoverflow.com/a/66860192/1034622

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res