上次写了 Codex 的安装教程,但是这只是我们的第一步,这篇文章中我们来聊下如何登录Codex。
很多同学费了好大力气才成功的安装上了Codex,结果在登陆的时候发现又一次被卡住了,这不奇怪,Codex 的登录逻辑确实有点绕——它不是一个简单的用户名密码,背后涉及到 OpenAI 的 OAuth 授权、API Key、Device Auth授权 三条线,常用的则是前两个。而且国内网络环境下,每条线都可能卡你一下。
今天把登录这件事彻底讲清楚。
一、先搞清楚:你用的是哪种 Codex
登录方式取决于你用的是哪个入口。Codex 目前有三种使用形态:
| Codex App | ||
| Codex CLI | ||
| OpenAI API |
三个形态共享同一个 OpenAI 账户的额度。
二、App 登录:最简单的方式
方式一:ChatGPT 账号登录
这是最省心的路径。打开 Codex 桌面应用,界面中央会有一个 「使用ChatGPT继续」 按钮。


授权成功,应用会自动打开,我们点开个人信息可以看到自己的套餐情况和使用额度。

需要注意的点:
登录用的是 ChatGPT 账号,不是 OpenAI Platform 的账号。虽然底层是同一个,但登录入口走的是 ChatGPT 那套 如果你有 ChatGPT Plus 或 Pro 订阅,登录后 Codex 会自动关联你的订阅额度 首次登录后,后续打开应用会自动登录,不用每次都走一遍授权
国内网络的同学注意: 授权页面在 chatgpt.com 上,需要确保网络能访问这个域名。如果浏览器跳转后白屏或者报错,大概率是网络问题。
方式二:API Key 登录
同样是打开 Codex 桌面应用,点击界面中央会有一个 「使用其他方式登录」 按钮。就会进入让你输入API Key的弹窗,如果我们有OpenAI的API Key,可以直接输入,如果没有,那我们可以先随便输入点内容,后面再进行修改就是了,它不会校验你的API Key的有效性,填个123456一样能进入到页面中。
如果是随意输入的Key,后续要修改,我们等到CLI部分统一来说明。


三、CLI 登录:三种路线选一个
CLI 的登录比 App 多一个选择"Sign in with Device Code"。

方式一:ChatGPT 账号登录(优先推荐)
终端输入 codex,第一次运行会自动触发登录流程:
1 codex 屏幕上会出现一个选项,选择 「Sign in with ChatGPT」,然后终端会给你一个链接,并自动打开浏览器。如果浏览器被不小心关闭了,也可以直接复制链接到浏览器打开,在浏览器里完成授权。
我们可以选择已经在网页端登陆的账号,也可以选择新的账号来进行登录授权。

当然也可以单独执行登录命令,不进入交互模式,直接输入:
1 codex login 效果和前面选择 「Sign in with ChatGPT」 效果一样,会自动打开浏览器,后续操作则和前面交互式选择时一样了,这里就不再赘述了。
而这种方式适合你只是想切换账号,或者之前的登录状态过期的时候使用。
方式二:API Key 登录
如果你没有 ChatGPT Plus/Pro 订阅,或者你更习惯用 API 按量计费,可以用 API Key。
这里我们以官网获取 API Key为例:
打开 OpenAI Platform 登录后点 「Create new secret key」 复制生成的 sk-开头的密钥,比如sk-123456
这里有同样可以分几种处理方式
1. 直接输入
和前面一样,首次登陆出现选项就直接选择 「 Provide your own API key」 ,回车后输入前面生成的apk key

2. 配置API Key信息到CLI
配置到 CLI:
1 echo "sk-xxxx" | codex login --with-api-key 看到 Successfully logged in 即代表成功了,后面我们再在终端输入“Codex”命令就不会再提示你选择登录了。

3. 先设置环境变量,再通过apikey命令设置
Mac 或 Linux 用户 在终端输入
1 export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx 设置成功后,我们再在终端中输入
1 printenv OPENAI_API_KEY | codex login --with-api-key 就会读取OPENAI_API_KEY中的值了。

注意:这种直接在终端中设置环境变量的方式是一次性的,下一次打开一个新的终端就没有了,如果想要永久生效,用户可以把这行命令加到
~/.zshrc或~/.bashrc里,并执行source ~/.zshrc让环境变量永久生效,以后每次打开终端自动生效。
Windows 用户 打开 “我的电脑” - “右键” - “属性” - “系统信息”
点击高级系统设置,然后点击环境变量

点击新建,变量名填入“OPENAI_API_KEY”,变量值填入你的ApiKey,并点击确定。

但要注意,此时环境变量不会在已经开启的终端中生效,必须重新打开一个终端。

1 $env:OPENAI_API_KEY 
可以看到我们配置的环境变量已经生效了。
我们在终端中输入这个命令即可。
1 $env:OPENAI_API_KEY | codex login --with-api-key 方式三:Sign in with Device Code
这种方式适合我们需要远程给其他设备授权或者是在一些headless浏览器中使用。大家知道有这么方式就行,基本上我们实际使用的都是使用前面两种。
跟前面一样,在弹出叫交互框的时候,我们选择 「 Sign in with Device Code」 。它会给你一个一次性的码,同样的去打开网站,登陆账号,然后输入生成的匹配码,验证成功后,即可自动进入Codex交互页面。

四、登录之后:验证一下
不管用哪种方式登录,验证方法都一样。
App: 打开桌面应用,能正常新建对话、发消息收到回复,就说明登录成功了。
CLI: 终端输入 codex,能进入交互界面,随便问一句能收到回复:
1 2 codex> 你好,帮我看看当前目录有什么文件 如果收到正常的回复,说明一切就绪。
五、几种方式怎么选?
简单说:有 Plus/Pro 的用 ChatGPT 登录,没有的用 API Key,毕竟国内搞到国产的API key 相比Plus/Pro账号要容易的多。而device auth这种我们知道有这么个事就行了,用的很少。
ChatGPT 登录的好处是不用管 Key,直接用订阅额度,且只有在ChatGPT账号登陆的方式下,CodexApp的插件菜单才可以使用。
API Key 的好处是不依赖浏览器授权流程,在服务器、Docker 容器、CI/CD 环境里更方便且对国内用户友好,缺点是目前国内很多厂商都还没适配Codex的“/responses”响应,不过目前也有很多软件帮我们通过代理做好了适配,这个我们后面再聊遇到了怎么处理。
六、常见登录问题
Q:浏览器授权页面白屏或者打不开?
这是国内网络最常见的问题。授权页面在 chatgpt.com,确保你的网络能访问这个域名,要保证你的🪜是开着的。当然了,如果实在不行,可以改用 API Key 方式登录,绕过浏览器授权。
Q:之前登录过,突然提示 token 过期?
执行 codex login 重新授权就行。ChatGPT 账号的 OAuth token 有效期有限,过期后需要重新走一次浏览器授权流程。
Q:API Key 报错 invalid?
检查几个地方:
Key 是不是以 sk-开头的(不是sk-proj-,两种格式都行,但别复制少了字符)Key 有没有过期或者被删除 账户余额是不是用完了(API Key 是按量计费的)
Q:登录成功但发消息报错?
大概率是额度问题。ChatGPT Plus/Pro 用户检查订阅是否到期;API Key 用户去 OpenAI Platform 看用量和余额。
Q:App 和 CLI 要分别登录吗?
是的,它们的登录状态是独立的。App 走的是桌面应用自己的 OAuth 存储,CLI 走的是本地 token 文件。不过它们用的是同一个 ChatGPT 账号,额度是共享的。
Q:能在服务器上用吗?
服务器没有浏览器,没法走 ChatGPT 账号的 OAuth 流程。直接用 API Key 登录就行:
1 2 export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxcodex 七、进阶:Codex 的账号体系
最后说一下背后的逻辑,理解了之后你就不会再困惑了。
OpenAI 有两套账号系统,虽然注册信息是同一个人,但用途不同:
| ChatGPT | ||
| OpenAI Platform |
Codex App 和 CLI 默认走 ChatGPT 体系,用的是你的订阅额度。如果你用 API Key 登录,就切到了 Platform 体系,走的是按量计费。
两套体系的额度是独立的。ChatGPT Plus 的额度不会从 API 余额里扣,API 的消费也不会影响 ChatGPT 的使用。
一句话总结: 能上 chatgpt.com 就用 ChatGPT 登录,上不了就用 API Key。登录问题 90% 都是网络问题。
相关链接:
Codex 官网:https://openai.com/codex OpenAI API Key 管理:https://platform.openai.com/api-keys OpenAI 用量查询:https://platform.openai.com/usage
夜雨聆风