亚马逊产品广告API签名

时间:2016-11-22 05:12:32

标签: ios amazon-web-services amazon-product-api

我正在iOS上编写一个应用程序,它使用Amazon API显示某个类别中的产品列表。

我遇到的问题是签署API。我在印度使用广告API,并使用暂存器来测试api调用。

对于Amazon Scratch生成的unsigned url,我有:

http://webservices.amazon.in/onca/xml?Service=AWSECommerceService&Operation=BrowseNodeLookup&SubscriptionId=IAMHIDINGTHISINFO&AssociateTag=HIDINGTHIS-XX&BrowseNodeId=1350388031&ResponseGroup=BrowseNodeInfo

对于签名我有:

http://webservices.amazon.in/onca/xml?AWSAccessKeyId= IAMHIDINGTHISINFO&AssociateTag=HIDINGTHIS-XX&BrowseNodeId=1350388031&Operation=BrowseNodeLookup&ResponseGroup=BrowseNodeInfo&Service=AWSECommerceService&Timestamp=2016-11-21T16%3A06%3A05.000Z&Signature=LETSSAYITGENERATEDTHIS

按照Amazon关于签名的文档的步骤,我得到最终的规范形式:

GET webservices.amazon.co.in/onca/xml AWSAccessKeyId= IAMHIDINGTHISINFO&AssociateTag=HIDINGTHIS-XX&BrowseNodeId=1350388031&Operation=BrowseNodeLookup&ResponseGroup=BrowseNodeInfo&Service=AWSECommerceService&Timestamp=2016-11-20T22%3A55%3A41.000Z

完全遵循他们的步骤。我将GET\nwebservices.amazon.co.in\n/onca/xml\n添加到其余键的字节顺序,然后使用HMAC SHA-256来获取签名。尽管如此,我得到了一个不正确的签名生成。我知道我使用的散列算法是正确的,因为当我散列他们在文档中给出的示例时,它会生成精确的散列(我正在使用他们的iOS SDK中的AWSSignatureSignerUtility)。 p>

有人可以告诉我,我是否应该提前GET\nwebservices.amazon.co.in\n/onca/xml\n或者是否应该是其他内容?

1 个答案:

答案 0 :(得分:0)

Signed Requests Helper的帮助下找出了问题。

显然,我本来应该提前

GET\nwebservices.amazon.in\n/onca/xml\n 

而不是

GET\nwebservices.amazon.co.in\n/onca/xml\n