前提・実現したいこと
ZAIFという仮想通貨取引所でAPIを使い、自分の資産状況の取得を試みています。
しかし、どこを変えてもエラーメッセージが出てしまします。
ZAIFのAPIドキュメント(https://techbureau-api-document.readthedocs.io/ja/latest/trade/1_common.html)によると、
「signはPOSTする全てのパラメータ(nonceとmethodおよびメソッド毎のパラメータ)を URLエンコードしたクエリ形式(param1=val1¶m2=val2)のメッセージとして、Secret Keyを用いてHMAC-SHA512で署名します。」
と記載がありこれが上手く実現できていないのかもしれません。
プログラミング初心者で上手く理解していないところがあり、わかる方なら簡単なことかもしれません。
お力添え頂けると幸いです。
発生している問題・エラーメッセージ
{"success": 0, "error": "signature mismatch"}
該当のソースコード
require 'net/http' require 'uri' require 'json' require "date" require "openssl" require "./Key" key = API_KEY_ZF secret = API_SECRET_ZF timestamp = Time.now.to_i.to_s method1 = "get_info" uri = URI.parse("https://api.zaif.jp/tapi") text = "method=" + method1 + "&nonce=" + timestamp sign = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha512"), secret, text) initheader = { "key" => key, "sign" => sign, } options = Net::HTTP::Get.new(uri.request_uri, initheader) https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true response = https.request(options) puts response.body
試したこと
APIキー、シークレットは何度も確認しました。
同様なコードでBitFlerではうまくできました。
ZAIFでもPOSTではなくGET(価格取得など)はうまくいきました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/21 12:53
2018/03/21 13:01
退会済みユーザー
2018/03/21 13:03
2018/03/21 13:17
退会済みユーザー
2018/03/21 13:43
2018/03/21 14:06
退会済みユーザー
2018/03/21 14:47