問候,
看起來我和其他人有類似的問題(這里和這里),但似乎遺漏了一些明顯的東西。嘗試呼叫 Coinbase 沙盒 API /accounts 以獲取帳戶串列。從字面上看,這是最基本的電話...
關注 docs.cloud.coinbase.com上的 SIGN 檔案
為了理解這個問題,我使用股票標準 BASH 腳本來curl
呼叫:
#!/usr/bin/env bash
TS=$(date %s)
API_KEY=fbb28bed4617217f482d878770b8c9b7
PASSPHRASE="passphrase87867"
SECRET="apcep9z66jyW3koh5uHhnq0hKQ5q59EBgTtpZ/GsvN9aigrFbxMpuz YP7xXo/ev OBZpqmv4OpCk7OKx6qGbw=="
URL="https://api-public.sandbox.exchange.coinbase.com/accounts"
#https://api.exchange.coinbase.com/accounts \
#https://api-public.sandbox.pro.coinbase.com/accounts \
SIG=$(echo "${TS}GET/accounts" | hmac256 --binary $API_KEY | base64)
#SIG=$(echo "${TS}GET/accounts" | hmac256 --binary $SECRET | base64)
#also tried with PASSPHRASE & SECRET and without base64:
#SIG=$(echo "${TS}GET/accounts" | hmac256 $PASSPHRASE)
#SIG=$(echo "${TS}GET/accounts" | hmac256 $SECRET)
curl --request GET \
--url $URL \
--header 'Accept: application/json' \
--header "cb-access-key: $API_KEY" \
--header "cb-access-passphrase: $PASSPHRASE" \
--header "cb-access-sign: $SIG" \
--header "cb-access-timestamp: $TS"
#comments 表示我嘗試過的各種設定。
我只是不斷收到{"message":"invalid signature"}
錯誤。
我會很感激任何指示。
/更新:此頁面包含一種計算簽名的方法(binance,是的,我得到了諷刺): https ://binance-docs.github.io/apidocs/spot/en/#signed-trade-user_data-and-保證金端點安全:
echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
謝謝
uj5u.com熱心網友回復:
為了完整起見,這里是 C# 解決方案:
using RestSharp;
using System.Text;
using System.Security.Cryptography;
using System.Globalization;
string computeSignature(
HttpMethod httpMethod,
string secret,
double timestamp,
string requestUri,
string contentBody = "")
{
var convertedString = System.Convert.FromBase64String(secret);
var prehash = timestamp.ToString("F0", CultureInfo.InvariantCulture) httpMethod.ToString().ToUpper() requestUri contentBody;
return hashString(prehash, convertedString);
}
string hashString(string str, byte[] secret)
{
var bytes = Encoding.UTF8.GetBytes(str);
using (var hmaccsha = new HMACSHA256(secret))
{
return System.Convert.ToBase64String(hmaccsha.ComputeHash(bytes));
}
}
var timeStamp = DateTimeOffset.Now.ToUnixTimeSeconds();
var apiKey = "fbb28bed4617217f482d878770b8c9b7";
var passPhrase = "passphrase87867";
var secret = "apcep9z66jyW3koh5uHhnq0hKQ5q59EBgTtpZ/GsvN9aigrFbxMpuz YP7xXo/ev OBZpqmv4OpCk7OKx6qGbw==";
var URL = "https://api-public.sandbox.exchange.coinbase.com/accounts";
var client = new RestClient(URL);
var request = new RestRequest();
request.AddHeader("Accept", "application/json");
request.AddHeader("cb-access-key", apiKey);
request.AddHeader("cb-access-passphrase", passPhrase);
request.AddHeader("cb-access-sign", computeSignature(HttpMethod.Get, secret, timeStamp, "/accounts"));
request.AddHeader("cb-access-timestamp", timeStamp);
RestResponse response = client.Execute(request);
// ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/507059.html
標籤:重击 卷曲 coinbase-api
上一篇:通過分頁從API獲取大資料
下一篇:轉換curl命令中的一些回應值