2014-02-11 4 views
1

API를 사용하여 Bitstamp 계정의 잔액에 액세스하려고합니다.Ruby의 Bitstamp API 서명

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"} 
+1

API를 간략히 살펴본 후 오류를 복제했습니다. 서비스가 의도 한대로 작동하지 않거나 아마 오류 메시지가 도움이되지 않을 가능성이 높습니다. 설명서에는 POST를 사용하는 것이 나와 있지만 요청 매개 변수를 보내거나 형식을 지정하는 방법에 대한 설명이 없습니다. Bitstamp 개발자에게 자세한 문서, 오류 메시지 또는 참조 클라이언트가 필요할 것이라고 제안합니다. –

+0

그게 다야, 그 요청을 POST로 보내야 만했다. – Sergey

+0

@Sergey - 위의 문제를 해결 했습니까? 나는 또한 여기에 같은 붙어있다? API는 잘 설명되어 있지 않습니다. 문제를 해결 한 경우 서명 생성 코드와 게시 요청 코드를 보내 주시겠습니까? – Sam

답변

2

문제는 내가 POST 대신 GET으로 요청을 보냈다는 것입니다. 여기 내가 지금 사용하고있는 전체 코드가 있습니다.

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 
관련 문제