AI Auth Converter 说明文档

这个页面记录项目的转换边界、字段映射和维护入口,方便后续修改时先看清楚现有逻辑。

返回转换器

项目定位

本项目是纯前端 JSON 转换工具,所有解析和转换都在浏览器本地完成。页面不上传 token,不写入浏览器存储。

当前只保留三个输出格式:CPAsub2apiCodex

支持输入

输入来源 识别字段 平台类型
ChatGPT Web session accessTokensessionTokenuser.emailaccount.id codex
Codex auth.json tokens.access_tokentokens.refresh_tokentokens.id_tokentokens.account_id codex
xAI/Grok OAuth auth.json keyrefresh_tokenexpires_atoidc_issuer: "https://auth.x.ai" xai
CPA JSON type: "codex"type: "xai",以及对应 token 字段 type 自动识别

输出规则

CPA

CPA 会自动识别平台:

sub2api

输出 exported_at/proxies/accounts 结构。账号对象的 expires_at 优先来自 access token JWT 的 exp,但带 refresh_token 的账号会省略 access-token 过期暂停字段。

Codex

只支持 codex 平台输入,输出原生 Codex auth.json

{
  "auth_mode": "chatgpt",
  "OPENAI_API_KEY": null,
  "tokens": {
    "id_token": "...",
    "access_token": "...",
    "refresh_token": "...",
    "account_id": "..."
  },
  "last_refresh": "..."
}

xAI/Grok OAuth 不能转换成 Codex,因为它属于不同认证平台。选择 Codex 输出时,xAI/Grok 账号会被跳过;如果输入里只有 xAI/Grok,会显示错误提示。

预览表字段

列名 含义
平台 codexxai,用于避免混合账号时看不出来源。
名称 优先取输入里的 namelabelmeta.label。没有独立名称时,Codex 显示 Codex Account,xAI 显示 xAI/Grok Account
邮箱 来自输入字段或 token payload;如果 xAI token 没有邮箱,则使用 OAuth 记录里的 email
过期时间 用于预览。xAI 带 refresh_token 时,CPA 输出不写过期字段,但预览仍可显示 OAuth 记录里的 expires_at

主要代码入口

测试

测试文件位于 tests/convert-session.test.js。本地验证命令:

node tests/convert-session.test.js

Cloudflare Workers 部署

项目使用 Workers Static Assets 部署 docs/ 目录。部署配置在 wrangler.jsonc,Worker 入口在 src/index.js

npm install
npm run deploy

生产域名:ai-auth-convert.bbb0t.com