如何解决如何解决调用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的用户已为其分配了策略:
不知何故,我们两次进行了逐步设置,而错过了添加此显式策略的步骤。最初,我认为是按照说明将其添加为“内联”,但这似乎行不通。
,如果您遵循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 举报,一经查实,本站将立刻删除。