Google Sheets调用FTX API返回401 Not logged in错误排查
Google Sheets调用FTX API 401报错修复方案
已知代码问题点
- 参数拼写错误:代码中
muteHTTPExceptions拼写不符合Google Apps Script规范,正确写法为muteHttpExceptions(Http首字母小写),错误拼写会导致该参数失效,无法获取完整返回内容排查问题。 - 签名编码不匹配:FTX要求签名计算时,消息和密钥均使用UTF-8编码,你当前使用的
BYTES编码如果和实际字符集不匹配会导致签名校验失败。同时请确认api_key、api_secret两个变量已正确赋值,无多余空格、换行等无效字符。 - 时间戳偏差超限:FTX要求
FTX-TS头的毫秒时间戳和FTX服务器时间偏差不能超过5秒,本地时间偏差过大时会直接触发401报错。 - 子账户请求缺失字段:如果查询的是子账户余额,需要在请求头额外添加
FTX-SUBACCOUNT字段,值为URL编码后的子账户名称。 - 请求方法大小写兼容问题:建议将options中的
method值改为大写GET,避免适配问题。
修正后代码示例
// 请先确保此处已正确赋值api_key和api_secret var api_key = '你的API_KEY'; var api_secret = '你的API_SECRET'; // 子账户如果需要就打开下面这行注释,填自己的子账户名 // var subaccount = encodeURIComponent('你的子账户名'); 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; // 改用UTF-8编码计算签名 var shaObj = new jsSHA("SHA-256", "TEXT"); shaObj.setHMACKey(api_secret, "TEXT"); shaObj.update(payload); var signature = shaObj.getHMAC("HEX"); var options = { method: 'GET', headers: { 'FTX-KEY': api_key, 'FTX-TS': timestamp, 'FTX-SIGN': signature // 子账户用户打开下面这行注释 // 'FTX-SUBACCOUNT': subaccount }, muteHttpExceptions: true } var jsondata = UrlFetchApp.fetch(url, options); // 可以先打日志看返回内容 console.log(jsondata.getContentText()); var data = JSON.parse(jsondata.getContentText());
内容的提问来源于stack exchange,提问作者Die Moba
相关产品推荐
相关产品推荐

