如果你也拿到 401 Invalid OK-ACCESS-KEY,这篇文章能一次帮你看透原因 + 方案。
现象速览:401 报错与模拟盘直连失败
在 https://www.okex.com 申请 API Key,信心满满地把 exchange.IO("simulate", true) 写进脚本,却在 GetAccount() 处反复收到:
401: {"msg":"Invalid OK-ACCESS-KEY","code":"50111"}接下来我们将从 3 个维度拆解为何出错,并提供完整验证步骤。
核心关键词
OKEX 模拟盘、OKEX v5 API、ACCESS-KEY 错误、401、沙箱环境、测试网络、数字货币交易、API 调试指南
问题根源全流程拆解
1️⃣ Key 类型不对:未申请模拟盘专用 API
- 实盘 API Key 无法 直连模拟盘域名
https://www.okex.com的测试端点。 - 必须在 OKEX「API 管理」页面激活 模拟盘 开关,单独生成一套 Key。
2️⃣ 调用域名不对:把端口或子域名写错
- 模拟盘官方域名:
https://www.okex.com - v5 沙箱无需额外端口,也不要自作主张在前面再加
demo-前缀。
3️⃣ exchange.IO 方法没生效
- 在 FMZ 框架里,
exchange.IO("simulate", true)才会让框架帮你切换 header。 - 如果写在
Init()之后(或在某些并发线程外),调用顺序就会被打乱。
如果你已经在找「跳过坑的极速通道」,可直接跳读👉从注册到第一条下单请求的完整 3 分钟流程。
Step by Step:10 分钟跑通 OKEX v5 模拟盘
① 生成独立沙箱 API Key
- 登录 OKEX 账户 → 右上角头像 →【API 管理】。
- 创建新 Key,勾选「模拟盘」;记录 Access Key / Secret Key / Passphrase。
- 权限至少勾「读取」「交易」;IP 白名单暂时填 0.0.0.0/0 方便调试。
② FMZ 平台配置
exchange.SetBase("https://www.okex.com") // 勿加 /api/v5
exchange.IO("simulate", true) // 必须在初始化前面
exchange.SetKey("AccessKey", "SecretKey", "Passphrase")③ 鉴权信息本地校验
本地 Postman 先调
/api/v5/account/balance:GET https://www.okex.com/api/v5/account/balance Header: OK-ACCESS-KEY: YOUR_ACCESS_KEY OK-ACCESS-SIGN: ${signature} OK-ACCESS-TIMESTAMP: ${ISO8601}成功返回余额即 KEY 可靠,失败再用错误码比对本文第 4 节。
高频疑难杂症速查表
| 错误码 | 常见原因 | 立即排查 |
|---|---|---|
| 50111 | KEY 不在模拟盘白名单 | 再测一次是否勾了「模拟盘」 |
| 50112 | 签名 timestamp 漂移 | 本地时间与 NTP 同步 |
| 50025 | 没有交易权限 | 回到 [API 管理] 重开权限并等待缓存 5 分钟 |
实战案例:三行代码定位错误
某策略两天跑不通,日志截取的调用序列如下:
2021-06-15 09:16:10 GetAccount: 401: {"msg":"Invalid OK-ACCESS-KEY","code":"50111"}
2021-06-15 09:16:11 exchange.IO("simulate", true) // 之后才写修复:把 exchange.IO 放到策略最顶部,马上 200 返回,问题解决。
FAQ:开发者最关心的 5 个问题
Q1:为什么我勾了模拟盘还是报错 50111?
A:账号本身未开通衍生合约权限。先在 OKEX「资产 → 资金划转」把 0.01 USDT 划到模拟盘合约账户,系统会自动激活合约沙箱。
Q2:同一个实盘 KEY 能在模拟盘跑吗?
A:不能。模拟盘 & 实盘各自独立;切勿混用,否则会一直 401。
Q3:exchange.IO("simulate", true) 与其他框架的写法冲突怎么办?
A:OKX Sandbox 只做了一层 header,用 FMZ/自编脚本皆可。切忌同时把 URL 指向 /api/v5/demo,那是无效路径。
Q4:测试完后如何一键切回实盘?
A:两行即可:
exchange.IO("simulate", false)
exchange.SetKey(...实盘KEY...)重启脚本,自动回连实盘域名。
Q5:模拟盘手续费和滑点跟实盘一样吗?
A:官方给出的答案是「与实盘一致,手续费率对标主站」。高并发套利仍建议本地回放真实 Tick 再检验滑点。
常见坑位最终复盘
- 忘记勾选「模拟盘」→ 401。
- 域名加错子路径 → 404。
exchange.IO写在交易逻辑之后 → 请求始终带实盘 Header → 401。
避开这三点,你就能在一台 1 核 1G 的云服务器上完成 7×24 策略直连测试——不再需要本地跑大盘数据模拟。
🎯 如果本文对你有所帮助,欢迎把这条流程分享给同事或社群,彻底杜绝下次再踩同样坑位。