【问题标题】:Binance API Signature with Google ScriptsBinance API 签名与谷歌脚本
【发布时间】:2018-06-19 21:13:02
【问题描述】:

我被困在如何根据 Google 脚本中的 Binance API 正确地将符号包含到我的 get 命令中。它说的是

SIGNED 端点需要在查询字符串或请求正文中发送附加参数签名。 端点使用 HMAC SHA256 签名。 HMAC SHA256 签名是键控 HMAC SHA256 操作。使用您的 secretKey 作为密钥,使用 totalParams 作为 HMAC 操作的值。 签名不区分大小写。 totalParams 定义为与请求正文连接的查询字符串。

我拥有的是:

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)
}

我得到的错误是:

{"code":-1100,"msg":"参数'signature'中发现非法字符;合法范围是'^[A-Fa-f0-9]{64}$'。"}

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

我之前的帖子是this.

【问题讨论】:

    标签: javascript google-apps-script google-sheets urlfetch


    【解决方案1】:

    这些修改怎么样?

    修改点:

    来自the manual you provided

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

    反映以上几点的修改脚本如下。

    修改后的脚本:

    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 的帐户。所以我无法运行这个脚本。对不起。
      • 当你运行这个脚本时,如果出现错误,你能告诉我错误信息吗?

    【讨论】:

    • 谢谢,这会运行并希望提取我需要的数据。
    • @Kayracer 欢迎。我可以从你的问题中学习。也谢谢你。
    • 谢谢你,真的,为我节省了很多时间和麻烦已经解决了这个问题的人。
    • @Mark Kramer 很高兴您的问题得到了解决。感谢您的评论!
    猜你喜欢
    • 1970-01-01
    • 2019-09-24
    • 2023-03-03
    • 1970-01-01
    • 2021-07-22
    • 2017-02-05
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多