各位大佬好,前几天在站内看到有佬提到 GPT 账号需要定时刷新 refresh_token 来保障账号状态,防止失效。出于保险起见,我尝试在 Sub2Api 中对批量账号进行了刷新令牌的操作,结果直接“翻车”了。特此记录一下排查过程和根因,给同样折腾 Sub2Api 和 CPA 的朋友们避个坑。
故障现象
在 Sub2Api 中触发批量刷新后,所有账号均刷新失败,且前端页面没有任何异常提示。
日志排查
通过查询数据库日志,抓取到了关键的报错信息:
- OpenAI 返回报错 :
Your refresh token has already been used to generate a new access token. Please try signing in again. code = refresh_token_reused - Sub2API 记录状态 :
OPENAI_OAUTH_TOKEN_REFRESH_FAILED、token_refresh.retry_exhausted、token_refresh.account_refresh_failed、temp_unschedulable_set
根因分析
根据报错代码 refresh_token_reused ,可以明确判定:这批 OpenAI OAuth 的 refresh token 已经被使用过或轮换过了。
OpenAI 的 OAuth 机制采用的是“一次性轮换”策略:即每次刷新成功后,服务端会下发一个新的 refresh_token ,而旧的 refresh_token 会立即作废。如果再次使用旧 token 请求,就会报上述错误。
目前 Sub2Api 里大量账号保存的 refresh_token 已经不是最新可用版本。推测原因是:之前刷新时新 token 没有成功落库,或者被并发刷新操作覆盖了。
场景复盘与处置
联想到我的这批账号同时也导出到了 CPA 平台,且目前主用 CPA。极大概率是 CPA 平台在后台触发了刷新机制,导致 token 发生了轮换 。而 Sub2Api 这边依然拿着 CPA 刷新前的“旧 token”去请求,从而引发了批量报错。
️ 当前止损措施
虽然 Sub2Api 里的账号目前依然可以正常调用(因为 access_token 可能还在有效期内),但为了保险起见,我已经把 Sub2Api 里的这批账号全部停止调度 了。
希望这波操作不会导致账号被风控或死号。纯经验分享,如果有分析错误的地方,欢迎各位大佬轻喷并指正!
1 个帖子 - 1 位参与者