Ruby中的Bitstamp API签名

Ruby中的Bitstamp API签名,ruby,bitcoin,Ruby,Bitcoin,我正在尝试使用API访问Bitstamp帐户的余额 secret = "secret" key = "key" nonce = (1000*Time.now.to_f).to_i.to_s client_id = "123123" message = nonce + client_id + key signature = HMAC::SHA256.hexdigest(secret, message).upcase puts open("https://www.bitstamp.net/api

我正在尝试使用API访问Bitstamp帐户的余额

secret = "secret"
key = "key"
nonce = (1000*Time.now.to_f).to_i.to_s
client_id = "123123"

message = nonce + client_id + key
signature = HMAC::SHA256.hexdigest(secret, message).upcase

puts open("https://www.bitstamp.net/api/balance/?nonce=#{nonce}&key=#{key}&signature=#{signature}").read
它清楚地生成所有必需的属性

https://www.bitstamp.net/api/balance/?nonce=1392137355403&key=key&signature=955A3FFC6FEBE69385B9503307873DBCD21E9B7B8EDE67817FFF70961189CE50
然而错误表明属性缺失,为什么

{"error": "Missing key, signature and nonce parameters"}

问题是我将请求作为GET而不是POST发送。下面是我现在使用的完整代码

require 'open-uri'
require 'json'
require 'base64'
require 'openssl'
require 'hmac-sha2'
require 'net/http'
require 'net/https'
require 'uri'

def bitstamp_private_request(method, attrs = {})
  secret = "xxx"
  key = "xxx"
  client_id = "xxx"
  nonce = nonce_generator

  message = nonce + client_id + key
  signature = HMAC::SHA256.hexdigest(secret, message).upcase

  url = URI.parse("https://www.bitstamp.net/api/#{method}/")
  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true

  data = {
    nonce: nonce,
    key: key,
    signature: signature
  }
  data.merge!(attrs)
  data = data.map { |k,v| "#{k}=#{v}"}.join('&')

  headers = {
    'Content-Type' => 'application/x-www-form-urlencoded'
  }

  resp = http.post(url.path, data, headers)
  console_log "https://www.bitstamp.net/api/#{method}/"
  resp.body
end

def nonce_generator
  (Time.now.to_f*1000).to_i.to_s
end

我快速查看了API并复制了您的错误。我认为要么是服务没有按预期工作,要么更可能是错误消息没有帮助。文档建议您使用POST,但没有说明如何发送或格式化请求参数。我建议Bitstamp开发人员需要更详细的文档、更好的错误消息,或者可能需要参考客户端。就是这样,我必须以POST的形式发送请求。@Sergey-您解决了上述问题吗?我也被困在这里?API没有很好的文档记录。如果您已经解决了这个问题,您可以将您的签名生成代码和post请求代码发送给我吗。@Jeff我添加了解决方案。