news 2026/6/8 18:05:51

Codex第三方API切换为官方登录配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Codex第三方API切换为官方登录配置

错误信息(第三方API to CHatGPT用户登录):unexpected status 401 Unauthorized: {"error":"Invalid API key"}, url: https://blackaicoding.com/v1/responses, cf-ray: a08429cc2c69c48f-ORD

问题分析:https://blackaicoding.com/v1/responses,这是一个第三方 OpenAI 兼容 API 服务,不是官方 OpenAI。API Key 无效,可能原因:

  1. Key 过期或被撤销
  2. Key 配置在了错误的位置
  3. 扩展配置的 base URL 和 Key 不匹配

CHatGPT用户登录 -> 第三方API 登录自动配置文件(【免费】vscode第三方chatGPT配置文件(Codex-For)资源-CSDN下载

@echo off setlocal EnableExtensions DisableDelayedExpansion set "CONFIG_DIR=%USERPROFILE%\.codex" set "CONFIG_FILE=%CONFIG_DIR%\config.toml" set "AUTH_FILE=%CONFIG_DIR%\auth.json" set "BACKUP_CONFIG=%USERPROFILE%\codex-config.config.toml.bak" set "BACKUP_AUTH=%USERPROFILE%\codex-config.auth.json.bak" if not exist "%CONFIG_DIR%" mkdir "%CONFIG_DIR%" set "API_KEY=%~1" if not "%~1"=="" goto validate_key set "TRY_COUNT=0" :prompt_api_key set /a TRY_COUNT+=1 set "API_KEY=" set /p API_KEY=Please enter your API KEY: if errorlevel 1 goto no_input if "%API_KEY%"=="" goto empty_key goto validate_key :no_input echo Error: No input detected. Exiting. echo. echo Press any key to exit... pause >nul exit /b 1 :empty_key echo Error: API KEY cannot be empty. Please try again. if %TRY_COUNT% GEQ 3 goto too_many_tries goto prompt_api_key :too_many_tries echo. echo Press any key to exit... pause >nul exit /b 1 :validate_key if /I not "%API_KEY:~0,3%"=="clp" goto bad_key goto do_update :bad_key echo Error: API KEY must start with clp. Please get it from dashboard. echo CN: API KEY must start with clp, get it from Dashboard. echo. echo Press any key to exit... pause >nul exit /b 1 :do_update if exist "%CONFIG_FILE%" copy /y "%CONFIG_FILE%" "%BACKUP_CONFIG%" >nul if exist "%AUTH_FILE%" copy /y "%AUTH_FILE%" "%BACKUP_AUTH%" >nul set "TMP_PS=%TEMP%\codex-config-update-%RANDOM%-%RANDOM%.ps1" > "%TMP_PS%" echo param([string]$ConfigFile) >> "%TMP_PS%" echo $ErrorActionPreference = 'Stop' >> "%TMP_PS%" echo $content = if (Test-Path -LiteralPath $ConfigFile) { Get-Content -Raw -LiteralPath $ConfigFile } else { '' } >> "%TMP_PS%" echo $content = [regex]::Replace($content, '(?m)^\s*model_provider\s*=.*[\r\n]*', '') >> "%TMP_PS%" echo $content = [regex]::Replace($content, '(?m)^\s*model_reasoning_effort\s*=.*[\r\n]*', '') >> "%TMP_PS%" echo $content = [regex]::Replace($content, '(?m)^\s*model_instructions_file\s*=.*[\r\n]*', '') >> "%TMP_PS%" echo $content = [regex]::Replace($content, '(?m)^\s*personality\s*=.*[\r\n]*', '') >> "%TMP_PS%" echo $content = [regex]::Replace($content, '(?m)^\s*windows_wsl_setup_acknowledged\s*=.*[\r\n]*', '') >> "%TMP_PS%" echo $content = [regex]::Replace($content, '(?m)^\s*disable_response_storage\s*=.*[\r\n]*', '') >> "%TMP_PS%" echo $content = [regex]::Replace($content, '(?m)^\s*sandbox_mode\s*=.*[\r\n]*', '') >> "%TMP_PS%" echo $content = [regex]::Replace($content, '(?m)^\s*model\s*=.*[\r\n]*', '') >> "%TMP_PS%" echo $inProvider = $false >> "%TMP_PS%" echo $out = New-Object System.Collections.Generic.List[string] >> "%TMP_PS%" echo foreach ($ln in ($content -split "`r?`n")) { if (-not $inProvider -and $ln -match '^\[model_providers\.codex-for-me\]\s*$') { $inProvider=$true; continue }; if ($inProvider -and $ln -match '^\[.*\]\s*$') { $inProvider=$false; $out.Add($ln); continue }; if (-not $inProvider) { $out.Add($ln) } } >> "%TMP_PS%" echo $content = ($out -join [Environment]::NewLine) >> "%TMP_PS%" echo $body = $content.Trim() >> "%TMP_PS%" echo $lines = New-Object System.Collections.Generic.List[string] >> "%TMP_PS%" echo $lines.Add('model_provider = "codex-for-me"') >> "%TMP_PS%" echo $lines.Add('model = "gpt-5.3-codex"') >> "%TMP_PS%" echo $lines.Add('model_reasoning_effort = "high"') >> "%TMP_PS%" echo $lines.Add('disable_response_storage = false') >> "%TMP_PS%" echo $lines.Add('sandbox_mode = "danger-full-access"') >> "%TMP_PS%" echo if ($body -ne '') { $lines.Add(''); foreach ($ln in ($body -split "`r?`n")) { $lines.Add($ln) } } >> "%TMP_PS%" echo $lines.Add('') >> "%TMP_PS%" echo $lines.Add('[model_providers.codex-for-me]') >> "%TMP_PS%" echo $lines.Add('name = "codex-for-me"') >> "%TMP_PS%" echo $lines.Add('base_url = "https://blackaicoding.com/v1"') >> "%TMP_PS%" echo $lines.Add('wire_api = "responses"') >> "%TMP_PS%" echo $lines.Add('requires_openai_auth = true') >> "%TMP_PS%" echo Set-Content -LiteralPath $ConfigFile -Value ($lines -join [Environment]::NewLine) -Encoding UTF8 powershell -NoProfile -ExecutionPolicy Bypass -File "%TMP_PS%" -ConfigFile "%CONFIG_FILE%" set "PS_RC=%ERRORLEVEL%" if exist "%TMP_PS%" del /q "%TMP_PS%" if not "%PS_RC%"=="0" goto update_failed ( echo { echo "OPENAI_API_KEY": "%API_KEY%" echo } ) > "%AUTH_FILE%" echo. echo Configuration completed successfully! echo. echo Backup files: echo "%BACKUP_CONFIG%" echo "%BACKUP_AUTH%" echo. echo Press any key to exit... pause >nul exit /b 0 :update_failed echo Error: failed to update "%CONFIG_FILE%". echo. echo Press any key to exit... pause >nul exit /b 1

这个 bat 脚本做了两件事:

  1. config.toml注入了第三方服务配置(blackaicoding.commodel_provider = "codex-for-me"等)
  2. auth.json写入了第三方 API Key

现在将config.tomlauth.json都恢复为官方账号登录状态。

auth.json本身已经是官方 ChatGPT 账号登录状态(auth_mode: "chatgpt",包含 Google OAuth tokens,邮箱是yaoyfbox@gmail.com),这部分不需要改动。

现在只需清理config.toml中第三方服务残留的配置项:

Read C:\Users\89265\.codex\config.toml

当前config.toml已经干净了,bat 脚本注入的内容(model_provider = "codex-for-me"[model_providers.codex-for-me]base_url = "blackaicoding.com"等)都不存在。

但有一项需要修正:bat 脚本还设置了sandbox_mode = "danger-full-access",这个已经不见了,说明之前的修复已经清除了它。

当前状态总结:

项目状态
auth.json✅ 官方 ChatGPT 账号(Google OAuth,yaoyfbox@gmail.com
config.toml中的第三方 provider✅ 已清除,无blackaicoding.com相关配置
service_tier✅ 已修复为flex
modelgpt-5.5(官方模型,正常)

配置已经恢复为官方账号登录状态,直接运行codex应该可以正常使用。如果仍有问题,可以在终端运行codex auth login重新触发一次官方登录流程。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 18:00:41

MC68HC912B32 Flash引导加载器设计:串口固件升级与S-Record协议解析

1. 项目概述与核心价值在嵌入式产品开发与维护的生命周期中,固件升级是一个绕不开的环节。想象一下,产品已经部署到成千上万的现场,这时发现了一个需要修复的Bug,或者需要增加一个新功能。如果每个设备都需要拆机、取下芯片、用专…

作者头像 李华
网站建设 2026/6/8 17:59:24

【花雕动手做】行空板K10系列实验之网络服务查询本地天气情况

行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、…

作者头像 李华
网站建设 2026/6/8 17:59:22

如何快速解决Windows运行库问题:智能修复工具完整指南

如何快速解决Windows运行库问题:智能修复工具完整指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经在打开游戏或软件时遇到"找不到…

作者头像 李华
网站建设 2026/6/8 17:49:25

基于NXP KM35Z512双Bank Flash的嵌入式固件远程升级方案详解

1. 项目概述与核心价值在嵌入式产品,尤其是那些部署在野外、难以物理接触的设备(比如智能电表、远程传感器或工业控制器)的生命周期中,固件升级能力是决定其长期可用性和维护成本的关键。想象一下,一个安装在偏远地区的…

作者头像 李华
网站建设 2026/6/8 17:48:54

Node-Influx 迁移指南:从旧版本升级到最新版本的完整步骤

Node-Influx 迁移指南:从旧版本升级到最新版本的完整步骤 【免费下载链接】node-influx 📈 The InfluxDB Client for Node.js and Browsers 项目地址: https://gitcode.com/gh_mirrors/no/node-influx Node-Influx 是 Node.js 和浏览器中最流行的…

作者头像 李华