此请求的币安 REST API 时间戳在 recvWindow 之外

8 api rest bash sh

我最近开始测试 Binance REST API,但一直无法获得任何帐户信息。我一直收到相同的错误代码 -1021 此请求的时间戳在 recvWindow 之外。不确定可能是什么问题。我已经三重检查我的系统是否与 NTP 同步,并且它与其他系统的匹配。我尝试将默认的 recvWindow 增加到 50 秒而不是默认的 5 秒,但没有运气。我应该会收到 API 文档中所示的 JSON 响应。我在下面粘贴了我的 bash 脚本。

https://www.binance.com/restapipub.html

更新的工作代码

#!/bin/bash

APIKEY="<PUBLIC-KEY-HERE>"
APISECRET="<SECRET-KEY-HERE>"
RECVWINDOW=5000 # 5 seconds    

RECVWINDOW='recvWindow='$RECVWINDOW
TIMESTAMP=$(( $(date +%s) *1000))
TIMESTAMP='timestamp='$TIMESTAMP

QUERYSTRING=$RECVWINDOW"&"$TIMESTAMP

SIGNATURE=`echo -n $QUERYSTRING | openssl dgst -sha256 -hmac $APISECRET`
SIGNATURE=`echo $SIGNATURE|cut -c 10-`
SIGNATURE='signature='$SIGNATURE


curl -H "X-MBX-APIKEY: $APIKEY" -X GET 'https://api.binance.com/api/v3/account?'$RECVWINDOW'&'$TIMESTAMP'&'$SIGNATURE

echo
echo RecvWindow:$RECVWINDOW
echo Timestamp:$TIMESTAMP
echo Signature:$SIGNATURE
echo
Run Code Online (Sandbox Code Playgroud)

小智 10

您需要将 date +%s 乘以 1000 才能得到毫秒,因为:

man date
%s     seconds since 1970-01-01 00:00:00 UTC
Run Code Online (Sandbox Code Playgroud)

那是几秒钟。

所以我冒昧地编辑你的代码:

#!/bin/bash
read APIKEY APISECRET <<< $(cat apibinance | cut -f2 -d " "); 
RECVWINDOW=50000
RECVWINDOW="recvWindow=$RECVWINDOW"
TIMESTAMP="timestamp=$(( $(date +%s) *1000))"
QUERYSTRING="$RECVWINDOW&$TIMESTAMP"

SIGNATURE=$(echo -n "$QUERYSTRING" | openssl dgst -sha256 -hmac $APISECRET | cut -c 10-)
SIGNATURE="signature=$SIGNATURE"


curl -s -H "X-MBX-APIKEY: $APIKEY" "https://api.binance.com/api/v3/account?$RECVWINDOW&$TIMESTAMP&$SIGNATURE" | jq '.'
echo
Run Code Online (Sandbox Code Playgroud)

考虑“apibinance”是一个文件,包含:

cat apibinance

key yourkey
sec yoursecret
Run Code Online (Sandbox Code Playgroud)