Error HTTP 401 de la API de Binance (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(“&”);
}
Error: code=-2014; Formato de API-Key inválido
La URL a la que estoy intentando acceder es ‘/v3/account’.
Ya he probado con mi ApiKey y SecretKey. Generé nuevas claves en la API de prueba de Binance y aún así no funcionó. ¿Podría ser la forma en que estoy pasando el ‘header’?
EDIT 1:
Cadena de URL qs = “?recvWindow=60000×tamp=1640963456770&signature=4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e”
davy.ai
Explicación del código y mensaje de error
El código anterior es una función privada que se utiliza para realizar llamadas a la API de Binance, una plataforma de intercambio de criptomonedas. La función toma cuatro parámetros:
apiSecret
: La clave secreta para la API.apiKey
: La clave pública para la API.path
: El endpoint de la API al que se accede.data
: Datos opcionales que se envían al endpoint.La función genera valores de
timestamp
yrecvWindow
, así como unasignature
para la llamada a la API. Esta firma se utiliza como mecanismo de autenticación para asegurar que solo los usuarios autorizados puedan acceder a la API. Las cabeceras de la solicitud se configuran con el parámetro de cabeceraX-MBX-APIKEY
, que incluye laapiKey
.El problema que se encuentra está relacionado con el parámetro
apiKey
. El mensaje de error indica que el formato de laAPI-Key
es inválido. Esto puede deberse a un problema de formato o valor con laapiKey
.Posibles soluciones
apiKey
yapiSecret
son correctas y coinciden con las generadas en el portal de gestión de la API de Binance.apiKey
tenga el formato correcto y no contenga caracteres ni espacios adicionales. Debe ser una cadena de letras y números.headers
se está configurando y pasando correctamente a la función que llama a la función privada.