我正在尝试通过API的“已验证”部分将我的Google表格连接到Bitfinex,以便我可以访问我的帐户信息。这是API link。
我无法让'request'或'crypto'库工作,所以我一直在尝试使用google工作表中的其他可用功能,但遇到了麻烦。
以下是我正在使用的代码段:
var completeURL = "https://api.bitfinex.com/v1/account_infos";
var nonce = Math.floor(new Date().getTime()/1000);
var body = {
'request' : completeURL,
'nonce' : nonce
};
var payload = JSON.stringify(body).toString('base64');
var signature = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_384,
payload,
secret);
signature = signature.map(function(byte) {
return ('0' + (byte & 0xFF).toString(16)).slice(-2);
}).join('');
var params = {
headers: {
'X-BFX-APIKEY': key,
'X-BFX-PAYLOAD': payload,
'X-BFX-SIGNATURE': signature
},
}
Logger.log(completeURL);
Logger.log(params);
var response = UrlFetchApp.fetch(completeURL, params);
var json = JSON.parse(response.getContentText());
我从API中收到以下错误:
请求https://api.bitfinex.com/v1/account_infos返回代码400失败。截断的服务器响应:{“message”:“无效的json。”}(使用muteHttpExceptions选项检查完整响应)。 (第209行,文件“代码”)
以下是Logger.log调用的值:
[17-09-24 16:22:28:170 AEST] https://api.bitfinex.com/v1/account_infos
[17-09-24 16:22:28:171 AEST] {headers={X-BFX-PAYLOAD={"request":"https://api.bitfinex.com/v1/account_infos","nonce":1506234148}, X-BFX-SIGNATURE=06d88a85098aefbf2b56af53721506863978f9350b1b18386c23f446254789dbbfc1eeb520bdfc7761b30f98ea0c21a2, X-BFX-APIKEY=ak6UoPiwaLjwt2UqDzZzZGjpb9P2opvdPCAIqLy0eVq}}
我被困住了,不知道还有什么可以尝试的?
有人能发现我做错了吗?
答案 0 :(得分:0)
我不确定我是否理解您的代码,但如果我这样做,乍一看至少有一个奇怪的地方:
在computeHmacSignature(...)
中,您使用的是尚未初始化甚至在任何地方声明的变量secret
。
答案 1 :(得分:0)
这次修改怎么样?由于我没有secret
,我无法调试此示例。所以我不知道这个修改后的样本是否有效。对不起。
secret
未定义。method: "post"
包含到UrlFetchApp.fetch()
。signature
。body: JSON.stringify(body)
包含在请求参数中。{"message":"Invalid json."}
。以上修改反映的脚本如下。
var secret = "#####"; // Please input this.
var completeURL = "https://api.bitfinex.com/v1/account_infos";
var nonce = Math.floor(new Date().getTime()/1000);
var body = {
'request' : completeURL, // I don't know whether this is the correct value.
'nonce' : nonce
};
var payload = Utilities.base64Encode(Utilities.newBlob(JSON.stringify(body)).getDataAsString());
var signature = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_384, payload, secret);
signature = signature.map(function(byte) {
return ('0' + (byte & 0xFF).toString(16)).slice(-2);
}).join('');
var params = {
method: "post",
headers: {
'X-BFX-APIKEY': key,
'X-BFX-PAYLOAD': payload,
'X-BFX-SIGNATURE': signature
},
payload: JSON.stringify(body),
contentType: "application/json",
muteHttpExceptions: true
}
var response = UrlFetchApp.fetch(completeURL, params);
var json = JSON.parse(response.getContentText());
如果这对你没用,我很抱歉。
答案 2 :(得分:0)
这就是它的工作原理
var body = {
'request' : "/v1/balances",
'nonce' : nonce,
'options':{}
};