You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node环境下Bittrex API密钥签名问题求助

解决Bittrex API签名错误(APISIGN_NOT_PROVIDED)问题

嘿,我之前也踩过Bittrex API签名的坑,你的问题出在签名生成逻辑和传递方式完全不对,咱们一步步来修正:

首先,Bittrex的v1.1 API要求的签名规则不是直接哈希你的API密钥,而是要对包含所有参数的完整请求URL用你的Secret密钥做HMAC-SHA512加密,而且这个签名是要放在HTTP请求头的apisign字段里,不是把签名当成apikey参数的值。

修正后的代码步骤:

  1. 先构建完整的请求URL
    这里的apikey用你实际的API密钥,nonce必须是每次请求唯一的递增数值(用时间戳是最方便的实现方式):

    const buildBalanceRequestUrl = (currency) => {
      const apiKey = process.env.BITTREX_API_KEY;
      const nonce = Date.now(); // 每次请求都要不一样,用自增计数器也可以
      return `https://bittrex.com/api/v1.1/account/getbalance?apikey=${apiKey}&currency=${currency}&nonce=${nonce}`;
    };
    
  2. 生成符合要求的签名
    用你的Secret密钥对上面构建的完整URL做HMAC-SHA512加密:

    const generateBittrexSignature = (url) => {
      const secret = process.env.BITTREX_SECRET;
      return crypto.createHmac('sha512', secret)
        .update(url)
        .digest('hex');
    };
    
  3. 发起请求时携带签名头
    把生成的签名放在apisign请求头里,而不是拼在URL里:

    export const account_balance_for_currency = async (currency) => {
      const requestUrl = buildBalanceRequestUrl(currency);
      const signature = generateBittrexSignature(requestUrl);
    
      // 这里用fetch举例,你也可以用axios或者Node.js的http模块
      const response = await fetch(requestUrl, {
        method: 'GET',
        headers: {
          'apisign': signature
        }
      });
    
      return response.json();
    };
    

为什么之前的方法无效?

  • 你之前是直接对API密钥做哈希,这完全不符合Bittrex的签名规则,平台根本识别不了这个所谓的signedKey。
  • 另外,Bittrex要求签名必须放在apisign请求头里,而不是作为URL参数传递,这就是你收到APISIGN_NOT_PROVIDED错误的核心原因。

额外注意事项:

  • 先确认你的process.env.BITTREX_API_KEY和process.env.BITTREX_SECRET确实加载成功了,可以用console.log输出检查,避免环境变量读取失败的问题。
  • nonce必须严格递增,不能重复,时间戳是最简单的实现,但如果你的请求频率很高,也可以用一个自增的计数器。
  • 确保请求方法是GET,Bittrex v1.1的账户类接口都是GET请求。

内容的提问来源于stack exchange,提问作者cheussy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:06:57