跳转到内容

使用 OAuth 1.0a 认证请求

OAuth 1.0a 的请求重点是签名。服务器需要把 HTTP 方法、URL、查询参数、OAuth 参数和密钥组合起来,生成 oauth_signature

示例结构:

Authorization: OAuth
oauth_consumer_key="YOUR_CONSUMER_KEY",
oauth_token="USER_ACCESS_TOKEN",
oauth_signature_method="RSA-SHA256",
oauth_timestamp="Unix 时间戳",
oauth_nonce="随机字符串",
oauth_signature="签名结果"

实际请求要放在一行里。示例换行只是为了阅读。

内容说明
HTTP 方法GETPOST 等。
请求 URL不含多余参数顺序差异。
OAuth 参数consumer key、token、timestamp、nonce 等。
查询参数URL 上的业务参数。
请求体参数视接口和签名规则而定。
密钥consumer secret、token secret 或私钥。
headers = {
"Authorization": build_oauth_header(
method="GET",
url="https://api.ibkr.com/v1/api/iserver/accounts",
consumer_key="YOUR_CONSUMER_KEY",
access_token="USER_ACCESS_TOKEN",
token_secret="USER_TOKEN_SECRET",
)
}

这里的 build_oauth_header() 需要严格按 OAuth 1.0a 和 IBKR 要求实现。上面的代码只展示调用位置,不是完整签名库。

现象可能原因
401token 失效、签名错误或权限不足。
签名无效URL 编码、参数排序或时间戳错误。
开发环境能用、服务器不能用服务器时间不同步、回调配置不同或密钥文件路径不同。
WebSocket 认证失败没有正确传 session token cookie。