繁体   English   中英

如何使用库币 API 发出 Javascript POST 请求?

[英]How do I make a Javascript POST request with the KuCoin API?

我正在尝试构建一个使用 KuCoin API 的 javascript/jQuery 脚本。 我特别尝试从浏览器控制台使用 KuCoin API,而不是从 Node JS 或本地文件。

我在 Kucoin API 上取得了一些成功,我可以发出签名的 REST GET 请求,但我无法让我的 REST POST 请求工作。 这是我的代码:

// VARIABLES
var burl = 'https://cors-anywhere.herokuapp.com/https://api.kucoin.com'
var api_key = "xxx"
var api_secret = "xxx"
var api_passphrase = "xxx"
var endPointAccount = '/api/v1/accounts';
var endPointOrder = '/api/v1/orders';

// REST (Account)
// This signed GET request works
var now = Date.now();
var hey = now + "GET" + endPointAccount

/* signature */
var signature = CryptoJS.HmacSHA256(hey, api_secret);
var signatureInBase64 = CryptoJS.enc.Base64.stringify(signature);

/* passphrase */
var passphrase = CryptoJS.HmacSHA256(api_passphrase, api_secret);
var passphraseInBase64 = CryptoJS.enc.Base64.stringify(passphrase);

var headers = {
    "KC-API-SIGN": signatureInBase64,
    "KC-API-TIMESTAMP": now,
    "KC-API-KEY": api_key,
    "KC-API-PASSPHRASE": passphraseInBase64,
    "KC-API-KEY-VERSION": "2"
}

var url = burl + endPointAccount;
$.ajax({
    type: 'GET',
    url: url,
    headers: headers,
    dataType: 'json',
    success: function (data) {
        console.log(data);
    }
});


// REST (Order Limit BUY)
// This signed POST request does not work. I always receive the following error with my POST request: code: '400005', msg: 'Invalid KC-API-SIGN'
var now = Date.now();
var hey = now + 'POST/api/v1/orders{"clientOid":"ADAUSDT","side":"buy","symbol":"ADA-USDT","price":"0.001","size","50000"}';

/* signature */
var signature = CryptoJS.HmacSHA256(hey, api_secret);
signatureInBase64 = CryptoJS.enc.Base64.stringify(signature);

/* passphrase */
var passphrase = CryptoJS.HmacSHA256(api_passphrase, api_secret);
passphraseInBase64 = CryptoJS.enc.Base64.stringify(passphrase);

var headers = {
    "KC-API-SIGN": signatureInBase64,
    "KC-API-TIMESTAMP": now,
    "KC-API-KEY": api_key,
    "KC-API-PASSPHRASE": passphraseInBase64,
    "KC-API-KEY-VERSION": "2"
}

var url = burl + endPointOrder;
$.ajax({
    headers: headers,
    type: "POST",
    url: url,
    dataType: "json",
    success: function (data) {
        console.log(data);
    }
});

我的 POST 请求总是收到以下错误:code: '400005', msg: 'Invalid KC-API-SIGN'

有谁知道我做错了什么?

谢谢,史蒂夫

我有同样的问题。 首先在你要签名的字符串中,你必须包含方法。 然后你需要定义一个body。 如果没有正文,则应通过 body=""。 然后你必须将 Date.now() 解析为字符串。 例如:

var now = Date.now().toString();
var hey = now + method + url + body;

在写完这篇文章后,我看到你已经包含了 url 中的方法,所以这也很好。

旁注:我没有使用 CryptoJS。 我使用了 node.js 的加密模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM