我被困在如何根据 Google Scripts 中的 Binance API 正确地将签名包含到我的 get 命令中。它所说的是



我所拥有的是:

function BinanceTrades() {
  var curTime = Number(new Date().getTime()).toFixed(0)
  var sKey = Utilities.computeHmacSha256Signature('symbol=LTCBTC&timestamp=' + curTime, '**mySeceretKey**');
  Logger.log(sKey)
  var headers = {'X-MBX-APIKEY': '**myKey**'}
  var data = UrlFetchApp.fetch("https://api.binance.com/api/v3/allOrders?signature=" + sKey + "&symbol=LTCBTC&timestamp=" + curTime, {'headers' : headers})
  Logger.log(data)
}

我得到的错误是:



我不确定如何正确计算 HMAC SHA256 并合并 totalParams。

我之前的帖子是 this.

最佳答案

这些修改怎么样?

retrofit 要点:

来自 the manual you provided

  • 在您的情况下,用于签名的字符串是 "symbol=LTCBTC&timestamp=" + curTime
  • 签名是未签名的十六进制字符串。
  • 但在 Google Apps Script 中,由 Utilities.computeHmacSha256Signature() 加密的数据是已签名的十六进制字节数组。

  • 反射(reflect)以上几点的修改后的脚本如下。

    修改后的脚本:
    function BinanceTrades() {
      var key = '**myKey**';
      var secret = '**mySeceretKey**';
    
      var curTime = Number(new Date().getTime()).toFixed(0);
      var string = "symbol=LTCBTC&timestamp=" + curTime;
      var sKey = Utilities.computeHmacSha256Signature(string, secret);
      sKey = sKey.map(function(e) {
          var v = (e < 0 ? e + 256 : e).toString(16);
          return v.length == 1 ? "0" + v : v;
      }).join("");
      var params = {
        'method': 'get',
        'headers': {'X-MBX-APIKEY': key},
        'muteHttpExceptions': true
      };
      var url = "https://api.binance.com/api/v3/allOrders?" + string + "&signature=" + sKey;
      var data = UrlFetchApp.fetch(url, params);
      Logger.log(data.getContentText())
    }
    

    笔记 :
  • 关于签名的加密,已经从 the manual you provided 确认这个脚本可以正常工作。
  • 我没有 binance.com 的账户。所以我无法运行这个脚本。抱歉。
  • 当你运行这个脚本时,如果出现错误,你能告诉我错误信息吗?
  • 关于javascript - 使用 Google Scripts 的 Binance API 签名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48191838/

    10-13 02:27