【问题标题】:Binance API Hmac Signature币安 API Hmac 签名
【发布时间】:2018-05-12 08:46:10
【问题描述】:

请帮助我不知道我的代码有什么问题。 不需要签名的端点可以正常工作,所以我想这是我如何获取签名的问题。我收到此错误:

data: { code: -2014, msg: 'API-key format invalid.' } } }

API文档:https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md

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

我的代码:

const axios = require('axios');
const crypto = require('crypto');
const qs = require('qs');

const binanceConfig = {
  API_KEY: 'XXXXXXX',
  API_SECRET: 'XXXXXX',
  HOST_URL: 'https://api.binance.com',
};

const buildSign = (data, config) => {
  return crypto.createHmac('sha256', config.API_SECRET).update(data).digest('hex');
};

const privateRequest = async (data, endPoint, type) => {
  const dataQueryString = qs.stringify(data);
  const signature = buildSign(dataQueryString, binanceConfig);
  const requestConfig = {
    method: type,
    url: binanceConfig.HOST_URL + endPoint + '?' + dataQueryString + '&signature=' + signature,
    headers: {
      'Authorization': `X-MBX-APIKEY: ${binanceConfig.API_KEY}`,
    },
  };

  try {
    console.log('URL: ', requestConfig.url);
    const response = await axios(requestConfig);
    console.log(response);
    return response;
  }
  catch (err) {
    console.log(err);
    return err;
  }
};

const data = {
  symbol: 'ARKBTC',
  recvWindow: 20000,
  timestamp: Date.now(),
};

privateRequest(data, '/api/v3/openOrders', 'GET');

【问题讨论】:

    标签: javascript node.js api


    【解决方案1】:

    尝试将headers 对象直接设置为具有X-MBX-APIKEY 的键:

    headers: {
      'X-MBX-APIKEY': binanceConfig.API_KEY,
    },
    

    【讨论】:

    • 但这是为什么呢?其他需要 API 密钥但不需要签名的端点使用“授权”可以正常工作
    猜你喜欢
    • 2021-06-17
    • 2018-07-05
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 2016-11-23
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多