Подпись API рекламы продуктов Amazon

Я пишу приложение для iOS, которое использует Amazon API для отображения списка продуктов в категории.

Проблема, с которой я столкнулся, заключается в подписании API. Я использую рекламный API в Индии и использую блокнот для проверки вызова API.

Для беззнакового URL-адреса, созданного Amazon Scratch, у меня есть:

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 для получения подписи. Несмотря на это, я получаю неправильную подпись. Я знаю, что алгоритм хеширования, который я использую, правильный, поскольку, когда я хеширую пример, который они приводят в документации, он генерирует точный хеш (я использую AWSSignatureSignerUtility из их iOS SDK).

Может кто-нибудь сказать мне, не следует ли мне добавлять GET\nwebservices.amazon.co.in\n/onca/xml\n или должно быть что-то еще?


person Kunal    schedule 22.11.2016    source источник
comment
В основном мне нужна помощь, чтобы выяснить, верна ли моя каноническая форма или нет, мое хеширование работает правильно в соответствии с их документацией, но я не уверен, верна ли каноническая форма, которую я подписываю.   -  person Kunal    schedule 22.11.2016


Ответы (1)