Sigo recibiendo este error "Excepción: la solicitud falló para https://ftx.com devolvió el código 401. Respuesta del servidor truncada: {"éxito": falso, "error": "No inició sesión"} (use la opción muteHttpExceptions para examinar respuesta)"
¿Qué está mal con mi código?
var host = 'https://ftx.com'; var endpoint ='/api/wallet/all_balances'; var url = host + endpoint; var timestamp = ''+ new Date().getTime(); var payload = timestamp + 'GET' + endpoint+''; var shaObj = new jsSHA("SHA-256", "BYTES"); shaObj.setHMACKey(api_secret, "BYTES"); shaObj.update(payload); var signature = shaObj.getHMAC("HEX"); var options = { method: 'get', headers: { 'FTX-KEY': api_key, 'FTX-TS': timestamp, 'FTX-SIGN': signature }, muteHTTPExceptions: 'true' } var jsondata = UrlFetchApp.fetch(url, options); var data = JSON.parse(jsondata.getContentText());Creo que su objetivo es el siguiente.
Desea solicitar la API Obtener saldos de todas las cuentas de FTX mediante Google Apps Script.
La secuencia de comandos de Python de muestra para recuperar el encabezado de la solicitud es la siguiente.
import time import hmac from requests import Request ts = int(time.time() * 1000) request = Request('GET', '<api_endpoint>') prepared = request.prepare() signature_payload = f'{ts}{prepared.method}{prepared.path_url}'.encode() signature = hmac.new('YOUR_API_SECRET'.encode(), signature_payload, 'sha256').hexdigest() request.headers['FTX-KEY'] = 'YOUR_API_KEY' request.headers['FTX-SIGN'] = signature request.headers['FTX-TS'] = str(ts)En este caso, cuando se modifica su secuencia de comandos, ¿qué tal la siguiente modificación?
Desafortunadamente, new jsSHA() no se puede usar directamente. En Google Apps Script, están las Utilidades de clase. Puede utilizar el método "computeHmacSha256Signature" de esta clase. Y creo que muteHTTPExceptions: 'true' es muteHttpExceptions: true .
function myFunction() { var api_key = "YOUR_API_KEY"; // Please set your API key. var secret = "YOUR_API_SECRET"; // Please set your secret value. var host = 'https://ftx.com'; var endpoint = '/api/wallet/all_balances'; var url = host + endpoint; var timestamp = '' + new Date().getTime(); var payload = timestamp + 'GET' + endpoint + ''; var signature = Utilities.computeHmacSha256Signature(payload, secret).map(byte => ('0' + (byte & 0xFF).toString(16)).slice(-2)).join(''); var options = { method: 'get', headers: { 'FTX-KEY': api_key, 'FTX-TS': timestamp, 'FTX-SIGN': signature }, muteHttpExceptions: true } var res = UrlFetchApp.fetch(url, options); console.log(res.getContentText()) }