2017-07-02 33 views
0

我目前正試圖連接到CEX.IO比特幣交易所的websocket。 Websocket連接正常,但在進行身份驗證時,出現錯誤:Timestamp is not in 20sec range。我不知道這個錯誤是什麼。Golang Gorilla CEX.IO Websocket驗證錯誤

測試用例1 & 2 for createSignature OK(https://cex.io/websocket-api#authentication)。

驗證Go代碼:

func toHmac256(message string, secret string) string { 
    key := []byte(secret) 
    h := hmac.New(sha256.New, key) 
    h.Write([]byte(message)) 
    return strings.ToUpper(hex.EncodeToString(h.Sum(nil))) 
} 

func Signature() (string, string) { 
    nonce := time.Now().Unix() // Edit with Cerise Limón answer 
    message := strconv.FormatInt(nonce, 10) + "API-KEY" 
    signature := api.toHmac256(message, "SECRET-KEY") 
    return signature, nonce 
} 

回答

1

錯誤信息是告訴你,時間戳是從當前時間超過20秒的路程。

API需要的時間以秒爲單位,而不是納秒。使用Unix以秒爲單位獲得時間。

 nonce := time.Now().Unix() 

Unix時間是自1970年1月1日UTC以來的秒數。

如果失敗,請檢查您的系統時間設置是否正確。

+0

'time.Now().Unix()' – LeMoussel

+0

同樣的錯誤檢查你的系統時間是否正確。 –

+0

Unix時間是自1970年1月1日(UTC)以來的秒數。我要求您檢查系統中的時鐘是否設置在正確時間的20秒內。 –