目前我正在与亚马逊MWS的HMAC一代进行一些努力。
我以为我明白它是如何运作的。
使用Scratchpad我生成了一个请求。 Scratchpad显示要签名的字符串以及SHA 256 HMAC和Base64 HMAC。 要签名的字符串由4行组成,如文档中所述。
HMAC有几个在线转换器。我试过了:
https://www.freeformatter.com/hmac-generator.html
https://codebeautify.org/hmac-generator
当我将字符串转换为Scratchpad生成的符号(4行)时,我得到另一个SHA 256 HMAC,然后生成Scratchpad。
还有几个适用于Base64的在线转换器。我试过了:
https://www.freeformatter.com/base64-encoder.html
当我转换Scratchpad生成的SHA 256 HMAC时,我得到另一个Base64-String,然后生成Scrathpad。
这让我很困惑。我不明白的是什么?
其他观点:
后来我想我想使用GET而不是POST。我是否正确,要为GET签名的字符串也必须在4行而不是在一行中,因为它将在以后执行?这就是我理解文档的方式。
我使用了这些链接: http://docs.developer.amazonservices.com/en_US/dev_guide/DG_QueryString.html http://docs.developer.amazonservices.com/en_US/dev_guide/DG_SigningQueryRequest.html https://mws.amazonservices.com/scratchpad/index.html
答案 0 :(得分:1)
回答我自己的问题。
使用Onlineconverter生成SHA256:
我认为问题是LF。 Onlineconverter可能有问题。也许他们使用CRLF。最好不要尝试使用在线转换器检查SHA256。
使用Onlineconverter生成base64:
SHA256 Scratchpad显示的不是您使用base64转换的值。您必须转换SHA256的十六进制值。
使用GET签名:
如果要使用GET,则要签名的查询必须类似于签署POST的查询。还有四行。只用GET交换POST。