如何在Ruby中格式化/发出经过身份验证的POST请求?

时间:2019-05-30 19:58:06

标签: ruby post sign coinbase-api

我想使用API​​并获取信息。

我的示例是Coinbase,但我认为这也将更广泛地应用并帮助其他人。

我有几条信息。

我知道我需要签名。
尽管网站上未显示(用于输入)“ passphrase”(密码)字段,但instructions似乎相对清晰。我现在假设为“。”

现在,我该如何使用该签名发布“ POST” ...
大概在签名字段中使用CoinbaseExchange.new.signature

我该如何格式化POST以在Ruby中执行该操作,即使用该签名?

网站摘要:

  

创建请求所有REST请求必须包含以下内容   标头:

CB-ACCESS-KEY The api key as a string.
CB-ACCESS-SIGN The base64-encoded signature (see Signing a Message).
CB-ACCESS-TIMESTAMP A timestamp for your request.
CB-ACCESS-PASSPHRASE The passphrase you specified when creating the API key.
All request bodies should have content type application/json and be valid JSON.
  

签署消息

require 'base64'
require 'openssl'
require 'json'

class CoinbaseExchange
    def initialize(key, secret, passphrase)
      @key = key
      @secret = secret
      @passphrase = passphrase
    end

    def signature(request_path='', body='', timestamp=nil, method='GET')
      body = body.to_json if body.is_a?(Hash)
      timestamp = Time.now.to_i if !timestamp

      what = "#{timestamp}#{method}#{request_path}#{body}";

      # create a sha256 hmac with the secret
      secret = Base64.decode64(@secret)
      hash  = OpenSSL::HMAC.digest('sha256', secret, what)
      Base64.strict_encode64(hash)
    end
end

0 个答案:

没有答案