You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python获取FTX账户信息返回Not logged in错误如何解决?

问题原因与解决方法

1. 地域适配问题

你身处美国,必须使用https://ftx.us/api/作为请求端点,原代码中你注释了该合法端点,使用了不对美国用户开放的ftx.com主站接口,主站会直接拦截美国IP的API请求,这是最可能的触发原因。首先修改端点配置:

# ENDPOINT = 'https://ftx.com/api/'
ENDPOINT = 'https://ftx.us/api/'

2. 代码逻辑错误

你计算签名后对原始Request对象添加头,又二次执行prepare操作,虽然该操作在当前无参数请求场景下不会直接报错,但如果后续请求带查询参数或请求体,两次prepare的结果会不一致,导致签名和实际请求内容不匹配,建议调整为直接修改prepare后的请求对象的头信息,修改后的代码参考:

from requests import Request, Session
import time
import hmac

method = 'GET'
# 替换为美国站端点
ENDPOINT = 'https://ftx.us/api/'
path = 'account'

API_KEY = '你的API_KEY'
API_SECRET = '你的API_SECRET'

request = Request(method, ENDPOINT + path)

ts = int(time.time() * 1000)
prepared = request.prepare()
# 计算签名
signature_payload = '{0}{1}{2}'.format(ts, prepared.method, prepared.path_url).encode()
if prepared.body:
    signature_payload += prepared.body
signature = hmac.new(API_SECRET.encode(), signature_payload, 'sha256').hexdigest()

# 直接给已prepare的请求添加头,无需二次prepare
prepared.headers['FTX-KEY'] = API_KEY
prepared.headers['FTX-SIGN'] = signature
prepared.headers['FTX-TS'] = str(ts)
# 如果是子账户,额外添加下面的头,值替换为你的子账户名
# prepared.headers['FTX-SUBACCOUNT'] = '你的子账户名'

response = Session().send(prepared)
data = response.json()

3. 其他可能原因

  • 检查API密钥权限:在FTX后台生成API Key时,需要开启Read权限才能读取账户信息,权限配置错误也会返回认证失败。
  • 检查本地时间同步:FTX要求请求时间戳和服务器时间差不能超过5秒,本地时间偏差过大会导致签名验证失败,建议开启系统自动时间同步。

额外说明

账户未进行过任何交易不会导致该报错,Not logged in属于接口认证阶段的错误,和账户交易状态无关。


内容的提问来源于stack exchange,提问作者Zjnerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:06:02