跳转到内容

会话

Client Portal API 的请求不是单纯拿一个长期 token 直接调用。Gateway 启动后,用户需要在浏览器里完成登录和二次认证,然后同一台电脑上的 API 请求会复用这个登录会话。

本页接口适合放在所有 Web API 程序的启动检查里:先确认会话在线,再请求账户、行情、订单等业务接口。

官方参考:Client Portal API

本地 Gateway 默认地址:

https://localhost:5000/v1/api

Gateway 使用自签名证书。命令行测试时,curl 通常需要加 -k;正式程序里也需要处理本地证书校验。

接口方法用途
/sso/validateGET检查 SSO 登录会话是否有效。
/iserver/auth/statusPOST查看交易服务会话是否已建立。
/ticklePOST保活会话,同时返回部分认证状态。
/logoutPOST退出 Gateway 会话。
Terminal window
curl -k -X POST https://localhost:5000/v1/api/iserver/auth/status

常见返回结构:

{
"authenticated": true,
"connected": true,
"competing": false,
"message": "",
"serverInfo": {
"serverName": "示例服务器名",
"serverVersion": "Build ..."
}
}

字段解释:

字段中文说明
authenticatedGateway 会话是否已经通过用户认证。
connectedGateway 是否已经连上 IBKR 后端交易服务。
competing是否存在同一用户的竞争会话。为 true 时,可能有其它终端抢占连接。
message认证异常或状态提示。为空通常表示正常。
serverInfoIBKR 后端服务器信息,用于排查连接状态。
Terminal window
curl -k -X POST https://localhost:5000/v1/api/tickle

/tickle 的作用是告诉 Gateway:程序仍然在使用会话。它不是登录接口,也不能绕过二次认证。

常见返回结构:

{
"session": "会话标识",
"ssoExpires": 360000,
"collission": false,
"iserver": {
"authStatus": {
"authenticated": true,
"connected": true
}
}
}

程序里可以每隔一段时间调用一次 /tickle,同时检查 authenticatedconnected。如果它们变成 false,就提示用户重新打开 Gateway 登录页。

运行示例后,不要只看 HTTP 状态码。至少要同时检查:

检查项正常含义
/sso/validate 返回成功浏览器登录会话仍然有效。
authenticated=truebrokerage session 已认证,可以继续访问多数 /iserver 资源。
connected=trueGateway 已连接 IBKR 后端交易服务。
competing=false同一用户名没有被其它交易平台抢占 brokerage session。
现象常见原因处理方式
浏览器能打开,接口返回 403请求没有复用 Gateway 登录上下文,或会话已过期重新访问 https://localhost:5000 登录。
authenticated=false用户尚未登录或二次认证未完成在浏览器完成登录与 2FA。
connected=false登录成功但交易服务会话未建立等待几秒后重试,或重新登录 Gateway。
competing=true同一用户名在其它终端建立了冲突会话关闭其它会话,或按页面提示确认该会话。