英文:
Golang Gorilla CEX.IO Websocket authentication error
问题
我目前正在尝试连接到CEX.IO比特币交易所的WebSocket。WebSocket连接正常,但在进行身份验证时,我遇到了错误:“时间戳不在20秒范围内”。我不知道这个错误是什么意思。
createSignature的测试用例1和2是正确的(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() // 使用Cerise Limón的答案进行编辑
message := strconv.FormatInt(nonce, 10) + "API-KEY"
signature := api.toHmac256(message, "SECRET-KEY")
return signature, nonce
}
英文:
I'm currently trying to connect to the CEX.IO bitcoin exchange's websocket.
Websocket connection is OK but at the time of authentication, I have the error: Timestamp is not in 20sec range
. I don't know what this error.
Test case 1 & 2 for createSignature is OK (https://cex.io/websocket-api#authentication).
Authentication Go code :
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
得分: 1
错误消息告诉你,时间戳与当前时间相差超过20秒。
API要求使用秒而不是纳秒表示时间。使用Unix将时间转换为秒。
nonce := time.Now().Unix()
Unix时间是从1970年1月1日UTC开始计算的秒数。
如果这个方法失败了,检查一下系统时间是否正确设置到秒。
英文:
The error message is telling you that the timestamp is more than 20 seconds away from the current time.
The API expects time in seconds, not nanoseconds. Use Unix to get the time in seconds.
nonce := time.Now().Unix()
Unix time is is seconds since Jan 01 1970 UTC.
If this fails, then check that your system time is set correctly down to the second.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论