Elixir'de bir Amazon Product Advertising API istemcisi yazmaya çalışıyorum. Geliştirici kılavuzu, bir HMAC-SHA26 hash'ının istek ve "Gizli Erişim Anahtarı" kullanılarak oluşturulması gereken the process for signing an API request'u açıklamaktadır.Elixir'de bir HMAC dizesi nasıl oluşturulur?
defp sign_request(url) do
url_parts = URI.parse(url)
request = "GET\n" <> url_parts.host <> "\n" <> url_parts.path <> "\n" <> url_parts.query
url <> "&Signature=" <> :crypto.hmac(:sha256, 'ThisIsMySecretAccessKey', request)
end
işlevi geçirilen url şöyle görünür: Bu benim isteği imzalama işlemek için yazdım fonksiyonudur http://webservice.amazon.com/onca/xml?AssociateTag=ThisIsMyAssociateTag&AWSAccessKeyId=ThisIsMyAWSAccessKeyId&Keywords=stuff&Operation=ItemSearch&SearchIndex=Apparel&Service=AWSECommerceService&Timestamp=2014-11-22T12%3A00%3A00Z&Validate=True&Version=2013-08-01
yaşadığım sorun olduğunu
, o :crypto.hmac/3
bir ikili döner iken, Bu ikili bir dize değil; dönüş değerini String.valid?/1
'a iletmek false
değerini döndürür. Bu nedenle, isteği imzalamak için url dizesinin sonuna dönüş değerini birleştiremiyorum.
:crypto.hmac/3
yanlış kullanıyorum? Kaybettiğim bir şey mi var? Bu konuda gitmem gereken alternatif bir yol var mı?
den maç örneğidir Elixir'de interpolasyon. http://elixir-lang.org/getting_started/2.html#2.4-strings Kodunuzu biraz kolaylaştırabilir. –