F#を使用してKrakenプライベートAPIにアクセスしようとしています。パブリックAPIにアクセスするコードは正常に動作しますが、プライベートAPIにアクセスしようとすると、常に「EGeneral:Invalid arguments」というエラーが発生します。F#のクラケンプライベートAPIが返すEGeneral:無効な引数
#r "FSharp.Data.dll"
open FSharp.Data
open System
open System.Text
open System.Security.Cryptography
let baseUri = "https://api.kraken.com"
let key = MY_KRAKEN_API_KEY
let secret = MY_KRAKEN_API_SECRET
let path = "/0/private/Balance"
let nonce = DateTime.UtcNow.Ticks
let bodyText = "nonce=" + nonce.ToString()
let hmac (key : byte []) (data : byte[]) =
use hmac = new HMACSHA512(key)
hmac.ComputeHash(data)
let sha256 (data : string) =
use sha = SHA256Managed.Create()
sha.ComputeHash(Encoding.UTF8.GetBytes(data))
let createSignature (nonce : int64) body (path : string) secret =
let shaSum = nonce.ToString() + body |> sha256
let data = Array.append (Encoding.UTF8.GetBytes path) shaSum
let key = Convert.FromBase64String secret
hmac key data |> Convert.ToBase64String
let signature = createSignature nonce bodyText path secret
let response = Http.RequestString (
url = baseUri + path,
httpMethod = "POST",
headers = ([("API-Key", key); ("API-Sign", signature)] |> Seq.ofList),
body = TextRequest bodyText
)
誰かが間違っているのを誰も見ていませんか?
EDIT: Kraken.com APIドキュメントはこちらawailableです:https://www.kraken.com/help/api
私は、ヘッダの署名が間違っていたとします。
秘密のAPIをデコード。私の場合、これはHTTP要求の本体部分の「ノンス」値だけです。APIキー= APIキーAPI-サイン= のHMAC-SHA512を使用してメッセージの署名(URIパス+ SHA256(ノンス+ POSTデータ)):ドキュメンタリーヘッダで送信される次の2つの値を必要とします 残りのパラメータは、POSTメソッドで送信する必要がありますし、BASE64はEDIT 2
キー