我正在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
或者是否应该是其他内容?
答案 0 :(得分:0)
在Signed Requests Helper的帮助下找出了问题。
显然,我本来应该提前
GET\nwebservices.amazon.in\n/onca/xml\n
而不是
GET\nwebservices.amazon.co.in\n/onca/xml\n