Binance REST API此请求的时间戳位于recvWindow之外

时间:2018-01-23 23:23:18

标签: bash rest api sh

我最近开始测试Binance REST API但无法获取任何帐户信息。我一直收到相同的错误 Code -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

1 个答案:

答案 0 :(得分:1)

你需要将日期+%s乘以1000,这样你才能得到毫秒,因为:

man date
%s     seconds since 1970-01-01 00:00:00 UTC

那是秒。

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

#!/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

认为“apibinance”是一个文件并包含:

cat apibinance

key yourkey
sec yoursecret