Ruby on rails Ruby为Amazon产品广告API生成HMAC-SHA256签名的方法

Ruby on rails Ruby为Amazon产品广告API生成HMAC-SHA256签名的方法,ruby-on-rails,ruby,amazon-web-services,amazon-product-api,Ruby On Rails,Ruby,Amazon Web Services,Amazon Product Api,我已经使用亚马逊的Producct广告API有一段时间了。我成功地将它提供的所有功能集成到我的应用程序中。但唯一剩下的是购物车创建操作,它需要生成HMAC-SHA256签名,并用于所有要执行的购物车操作。我已经阅读了关于这个问题的文档和所有可用的线程,但在我看来,在我的案例中没有任何东西起作用 我甚至已经通过了多个宝石,但没有人提供了一个解决方案。我目前正在使用Ruby 2.2.3和Rails 4.2.5的Vacuumgem 问题:我主要需要了解如何生成此HMAC签名,以便在所有与购物车相关的操

我已经使用亚马逊的Producct广告API有一段时间了。我成功地将它提供的所有功能集成到我的应用程序中。但唯一剩下的是购物车创建操作,它需要生成HMAC-SHA256签名,并用于所有要执行的购物车操作。我已经阅读了关于这个问题的文档和所有可用的线程,但在我看来,在我的案例中没有任何东西起作用

我甚至已经通过了多个宝石,但没有人提供了一个解决方案。我目前正在使用Ruby 2.2.3和Rails 4.2.5的
Vacuum
gem


问题:我主要需要了解如何生成此HMAC签名,以便在所有与购物车相关的操作中使用它。

可以使用Ruby的OpenSSL支持创建HMAC签名。然后必须对其进行Base64编码,以便可以通过导线发送。基本前提如下

require 'openssl'
require 'Base64'

key = "your-secret-access-key"
data = "data you want signed"

signature = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), key, data)).strip()
根据您的需要调整上述内容,
是您的AWS访问键,
数据
是您要发送的请求的字符串表示形式,如上所述

如何构造
数据
字符串是特定于实现的,但常用的方法是从实际请求对象(最常见的是
Net::HTTP:HTTPRequest
)构建规范字符串。希望这有帮助