当前位置: 首页 > 知识库问答 >
问题:

Bitfinex API错误消息“密钥符号不存在”。

翟英达
2023-03-14

我正在使用Bitfinex API,API的版本是1。但我有一个无法解决的问题。当我使用“/v1/order/new”时,服务器会发送消息“Key-symbol was not present”我找不出哪一点是问题所在。参数设置如下。请告知。

========== ========== ========== ==========

/**
    Create Header, Param
*/  
JSONObject json = new JSONObject();
json.put("request", targetURL);
json.put("nonce", Long.toString(getNonce()));
String payload = json.toString();
String payload_base64 = Base64.getEncoder().encodeToString(payload.getBytes());
String payload_sha384hmac = hmacDigest(payload_base64, apiKeySecret, ALGORITHM_HMACSHA384);

HttpTask http = new HttpTask(URL, Method.POST); 
http.addHeader("X-BFX-APIKEY", apiKey);
http.addHeader("X-BFX-PAYLOAD", payload_base64);
http.addHeader("X-BFX-SIGNATURE", payload_sha384hmac);

http.setContentType("x-www-urlencoded");
http.setAcceptType("application/xml");

http.addParam("symbol", "btcusd");
http.addParam("amount", "0.01");
http.addParam("price", "0.01");
http.addParam("side", "buy");
http.addParam("type", "exchange market");
http.addParam("is_hidden", "false");
http.addParam("is_postonly", "true");
http.addParam("use_all_available", "0");
http.addParam("exchange", "bitfinex");
http.addParam("ocoorder", "false");
http.addParam("buy_price_oco", "0");


/**
    Parsing Param
*/  
StringBuilder sb = new StringBuilder();
Set<String> key = m_params.keySet();
int totalCount = key.size();
if (totalCount > 0) {
    int index = 0;
    for (Iterator<String> iterator = key.iterator(); iterator.hasNext();) {
        String keyValue = (String) iterator.next();
        String valueValue = (String) m_params.get(keyValue);
        sb.append(String.format("%s=%s", keyValue, valueValue));
        if (index < totalCount - 1) {
            sb.append("&");
        }
        index++;
    }

    query = sb.toString();
}

/**
    send Param
*/
if (!query.isEmpty()) {
    DataOutputStream wr;
    try {
        wr = new DataOutputStream(m_connection.getOutputStream());
        wr.writeBytes(query);
        wr.flush();
        wr.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

共有1个答案

冯祺
2023-03-14

您需要将所有参数放入有效负载对象中。

这是我在JAVASCRIPT上的示例:

auth_v1_request(path, params){

return new Promise((resolve, reject) => {

  // console.log(this.account);

  const apiKey = this.account.api_key;
  const apiSecret = this.account.api_secret;

  const apiPath = '/' + path;

  const nonce = (Date.now() * 1000).toString();

  const completeURL = `${ CONFIG.BITFINEX.API_URL }${apiPath}`;

  params.nonce = nonce;
  params.request = apiPath;

  const payload = new Buffer(JSON.stringify(params))
    .toString('base64');

  const signature = crypto
    .createHmac('sha384', apiSecret)
    .update(payload)
    .digest('hex');

  const options = {
    url: completeURL,
    headers: {
      'X-BFX-APIKEY': apiKey,
      'X-BFX-PAYLOAD': payload,
      'X-BFX-SIGNATURE': signature
    },
    body: JSON.stringify(params),
    json: true
  };

  request.post(options, (error, response, res_body) => {

    console.log(error);
    console.log(res_body);

    if(error) {
      reject(error);
    }
    else {
      let parsed;
      try {
        parsed = res_body;
        if(parsed.message){
          reject(parsed);
        }
        else {
          resolve(parsed);
        }
      }
      catch(err) {
        reject(err);
      }
    }

  })

});


}
 类似资料:
  • 问题内容: 我尝试创建一个新的自我认证的密钥库文件 我使用的命令是: 但我总是收到这个烦人的错误: 我不明白为什么会收到此错误。上面的命令应该创建一个新的密钥库,所以为什么它抱怨不存在的密钥库? 问题答案: 生成密钥对(和新的密钥库)必须作为为该密钥创建自签名证书的单独操作来完成。 即

  • 有没有办法在Firebase控制台中重新生成FCM(云消息部分)的API Key?该密钥不可编辑,与Google API控制台中自动生成的密钥不同。由于这个错误的配置,我总是从FCM得到未经授权的401...

  • 问题内容: 因此,我一直在尝试使用带有node-rsa的node和带有jsencrypt的 javascript 创建一个网站(用于分配),其中javascript客户端获取服务器生成的公共密钥(node- rsa),对消息进行加密(jsencrypt)用户输入的密码,将其发送到服务器,并让服务器对其进行解密(node- rsa)。密钥的生成有效,而加密有效,但是解密无效。启动节点脚本时,请执行以

  • 我试图用不同的密钥将消息存储到不同的分区。 例如: 但是当我尝试运行我的Producer类时,它总是存储在单个分区中。 根据文档,使用查找分区。我还看到这个问题Kafka分区键工作不正常‏, 但我在Kafka Client库的0.9.x版本中找不到<code>ByteArrayPartitioner</code>类。 更新:我正在使用代码动态创建主题。 如果我手动创建一个带有分区的主题,那么它可以

  • 我必须连接到一个基于REST的WebService。 (https://someurl.com/api/lookup/jobfunction/lang/en) 在IE或chrome浏览器中,当我尝试访问这个URL时,我会得到一个证书,我必须信任它并接受它才能继续,然后我必须输入用户名和密码,然后我会得到JSON响应。 同样的事情,我必须为一个android应用程序编程。 > 尝试使用自定义Easy

  • 文件。当前密钥、web API密钥和服务器密钥之间有什么区别,在哪里可以找到当前密钥FCM控制台?我找不到它。