白标用户信息总览
白标用户信息接口用于查询登录用户关联的白标 ID。它只适合处理 IBKR 白标体系相关的身份标识,不是普通账户资料、资产、权限或用户联系方式接口。
app.reqUserInfo(reqId)返回结果通过 userInfo() 回调接收:
def userInfo(self, reqId, whiteBrandingId): ...这个接口不是普通账户资料接口。它不会返回姓名、邮箱、手机号、账户余额、持仓或权限列表,只返回与白标体系相关的 whiteBrandingId。
官方说明里有一个重要边界:如果用户名没有关联白标实体,请求可能不会返回有效白标信息。实际开发时要同时处理两种情况:
- 收到
userInfo()回调,但whiteBrandingId是空字符串。 - 请求已发出,但在超时时间内没有收到
userInfo()回调。
适合解决什么问题
Section titled “适合解决什么问题”| 问题 | 是否适合 |
|---|---|
| 判断用户是否关联 White Branding ID | 适合 |
| 获取账户资产、现金、保证金 | 不适合,使用账户更新或账户摘要接口 |
| 获取持仓、成本、盈亏 | 不适合,使用持仓或 PnL 接口 |
| 获取用户邮箱、实名资料 | 不适合,TWS API 不提供这类普通资料查询 |
| 阶段 | 方法 |
|---|---|
| 请求 | reqUserInfo(reqId) |
| 接收 | userInfo(reqId, whiteBrandingId) |
它是一次性请求,不需要像行情、持仓、PnL 那样调用取消方法。
| 字段 | 中文含义 | 说明 |
|---|---|---|
reqId | 请求编号 | 由程序自己分配,用于匹配请求和回调 |
whiteBrandingId | 白标 ID | 用户关联的白标标识;普通账户可能为空字符串,也可能没有回调 |
TWS 模拟账户检查时返回了 userInfo() 回调,但 whiteBrandingId 为空字符串。这表示接口链路可用,只是用户没有关联可见的白标 ID。
CONNECTED=TrueREQUEST_SENT=TrueUSER_INFO_CALLBACK_RECEIVED=TrueUSER_INFO_ROW_COUNT=1ROWS=[{'reqId': 9401, 'whiteBrandingId_empty': True, 'whiteBrandingId_length': 0}]WHITE_BRANDING_ID_EMPTY=TrueWHITE_BRANDING_ID_LENGTH=0INFO_CODES=2104,2106,2158NON_INFO_ERROR_COUNT=0IS_CONNECTED_AFTER_DISCONNECT=False公开文档和日志中不应直接打印真实白标 ID。示例只输出是否为空和长度。
| 表现 | 含义 | 处理方式 |
|---|---|---|
收到回调,whiteBrandingId 非空 | 用户有关联白标 ID | 保存到受控配置或后台,不要写入公开日志 |
收到回调,whiteBrandingId 为空 | 用户没有可返回的白标 ID | 按“无白标信息”处理 |
| 超时未收到回调,且无非信息类错误 | 用户可能无白标关联,或版本/环境不返回 | 给出温和提示,不要当成连接失败 |
| 出现非信息类错误 | 请求失败或版本不支持 | 记录错误码并进入错误排查 |