2017-01-23 145 views
0

我搜索了其他帖子,因爲我不是唯一簽署問題的人。我用幾種語言嘗試過,而且我總是遇到同樣的問題。Coinbase.com無效簽名

什麼我錯與API認證做與coinbase.com:

# normally I fetch the timestamp from https://api.coinbase.com/v2/time 
TIMESTAMP=$(date +%s) 
SIG=$(echo -n "${TIMESTAMP}GET/v2/accounts" | hmac256 --stdkey $COINBASE_SECRET) 

curl https://api.coinbase.com/v2/accounts \ 
    --header "CB-ACCESS-KEY: $COINBASE_KEY" \ 
    --header "CB-ACCESS-SIGN: $SIG" \ 
    --header "CB-ACCESS-TIMESTAMP: $TIMESTAMP" \ 
    --header "CB-VERSION: 2016-03-08" 

在旅途中,我試圖做一些事情,如:

nonce := strconv.FormatInt(int64(time.Data.Epoch), 10) 
message := nonce + req.Method + endpoint // endpoint "/v2/accounts" 
req.Header.Set("CB-ACCESS-KEY", a.Key) 
h := hmac.New(sha256.New, []byte(a.Secret)) 
h.Write([]byte(message)) 

signature := hex.EncodeToString(h.Sum(nil)) 

req.Header.Set("CB-ACCESS-SIGN", signature) 
req.Header.Set("CB-ACCESS-TIMESTAMP", nonce) 
req.Header.Set("CB-VERSION", "2016-03-08") 

而且它接縫的沙箱是不由於api.sandbox.coinbase.com不可用?

親切的問候

+0

使用time.Now().Unix()或更好的方法是使用[library](https://developers.coinbase.com/docs/wallet/client-libraries) – Mark

+0

@Mark提到的golang庫已經過時並仍然使用v1 – zio

回答

0

對bash /捲曲的問題是HMAC工具我echo使用。下面爲我​​工作的,捲曲的請求:

SIG=$(echo -n "${TIMESTAMP}GET/v2/accounts" | openssl dgst -sha256 -hmac "$COINBASE_SECRET" |cut -d' ' -f2); 

關於golang的我相比,哈希款項,並得出結論的東西是腥與我使用的是當前庫。

我自己寫了一個圖書館(https://github.com/Zauberstuhl/go-coinbase),現在它像一個魅力。 我在做和上面一樣的操作,只是我使用Sprintf作爲最終編碼,但應該是相同的。

無論如何,謝謝!