币安 API http 错误 401 (Ionic/Angular)
Binance API http error 401 (Ionic/Angular)
privateCall(apiSecret, apiKey, path, data = null, get = true) {
const timestamp = Date.now();
const recvWindow = 60000; //máximo permitido, default 5000
var obj = {
apiSecret,
...data,
timestamp,
recvWindow
};
var hash = CryptoJS.SHA256(obj);
var signature = hash.toString();
const newData = {...data, recvWindow, timestamp, signature };
let qs = `?${this.objectToQueryString(newData)}`;
const headers = new HttpHeaders();
headers.set("X-MBX-APIKEY", apiKey);
if (get) {
return this.http.get<any>(`${this.binanceUrl}${path}${qs}`, { headers: headers } );
} else {
return this.http.post(`${this.binanceUrl}${path}${qs}`, data, { headers: headers });
}
}
private objectToQueryString(obj) {
var str = [];
for(var p in obj) {
if (obj.hasOwnProperty(p)) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
}
return str.join("&");
}
错误:代码=-2014; API-密钥格式无效
我要达到的 Url 是“/v3/account”。
我已经测试了我的 ApiKey 和 SecretKey。我在 binance test api 中生成了新密钥,但它仍然没有用。这可能是我通过 'header' 的方式吗?
编辑 1:
URL 字符串 qs = "?recvWindow=60000×tamp=1640963456770&signature=4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e"
问题似乎出在您设置 X-MBX-APIKEY header 的方式上。
Angular 的 HttpHeaders 是不可变的。
所以,当你这样做时
const headers = new HttpHeaders();
headers.set("X-MBX-APIKEY", apiKey);
您正在创建一个空的 HttpHeaders object,创建一个具有所需 header 值的克隆,将其丢弃,然后发送空版本。
您可以使用获取值的 HttpHeaders 构造函数,或者安排使用 HttpHeaders.set() 返回的 cloned/updated 版本,例如
const headers = new HttpHeaders().set("X-MBX-APIKEY", apiKey);
privateCall(apiSecret, apiKey, path, data = null, get = true) {
const timestamp = Date.now();
const recvWindow = 60000; //máximo permitido, default 5000
var obj = {
apiSecret,
...data,
timestamp,
recvWindow
};
var hash = CryptoJS.SHA256(obj);
var signature = hash.toString();
const newData = {...data, recvWindow, timestamp, signature };
let qs = `?${this.objectToQueryString(newData)}`;
const headers = new HttpHeaders();
headers.set("X-MBX-APIKEY", apiKey);
if (get) {
return this.http.get<any>(`${this.binanceUrl}${path}${qs}`, { headers: headers } );
} else {
return this.http.post(`${this.binanceUrl}${path}${qs}`, data, { headers: headers });
}
}
private objectToQueryString(obj) {
var str = [];
for(var p in obj) {
if (obj.hasOwnProperty(p)) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
}
return str.join("&");
}
错误:代码=-2014; API-密钥格式无效
我要达到的 Url 是“/v3/account”。
我已经测试了我的 ApiKey 和 SecretKey。我在 binance test api 中生成了新密钥,但它仍然没有用。这可能是我通过 'header' 的方式吗?
编辑 1:
URL 字符串 qs = "?recvWindow=60000×tamp=1640963456770&signature=4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e"
问题似乎出在您设置 X-MBX-APIKEY header 的方式上。
Angular 的 HttpHeaders 是不可变的。 所以,当你这样做时
const headers = new HttpHeaders();
headers.set("X-MBX-APIKEY", apiKey);
您正在创建一个空的 HttpHeaders object,创建一个具有所需 header 值的克隆,将其丢弃,然后发送空版本。
您可以使用获取值的 HttpHeaders 构造函数,或者安排使用 HttpHeaders.set() 返回的 cloned/updated 版本,例如
const headers = new HttpHeaders().set("X-MBX-APIKEY", apiKey);