我认为构建一个自定义基于节点的接口以通过其API与binance.us进行交互是一个有趣的项目,并且在尝试提取帐户信息时遇到以下错误,这需要HMAC SHA256签名的请求:
{code: -1022, msg: 'Signature for this request is not valid'}
我相信我可以正确生成签名,因为API文档包含示例(请参见上面的链接)。当我将示例查询字符串和示例密钥插入我的代码时,我得到了正确的签名(我的代码使用Node.js加密模块)。我的代码:
const buildSig = (queryString, secret) => {
return crypto.
.createHmac('sha256', secret)
.update(queryString)
.digest('hex');
}
以给定的样本值调用时:
queryString = 'symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559'
secretKey = 'NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j'
我的代码生成了正确的签名:c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71。
尽管如此,每个请求响应都表明我的签名无效。
最后一件事-至于请求本身,我正在使用node-fetch。我的代码为帐户详细信息请求生成的示例请求如下:
fetch('https://api.binance.us/api/v3/account?timestamp=1597548872749&signature=<MY SIG>',
{
method: 'GET',
headers: {'X-MBX-APIKEY': '<MY PUB API KEY>'}
});
有人知道我的代码在哪里吗?
谢谢!