当前位置: 首页 > news >正文

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重新触发一次官方登录流程。

http://www.zskr.cn/news/1487860.html

相关文章:

  • 中立科普:上海名表回收行业乱象、定价规则与优质机构推荐 - 开心测评
  • 058、混合场景白平衡挑战:多光源场景的 AWB 区域分割与独立校正
  • Windows VxD驱动开发实战:DSP56301 PCI接口中断与内存管理详解
  • 2026年东莞电缆线回收品牌推荐与选择攻略:如何挑选正规靠谱的回收服务商 - 广东再生资源回收
  • Playnite终极指南:一站式游戏库管理神器,免费整合20+平台游戏与模拟器
  • 2026长春管道疏通机构盘点推荐:马桶、厨房、下水道全场景服务 - 品研笔录
  • Webpack构建Responsive Boilerplate项目:优化与部署最佳实践
  • 跨平台使用MobaXterm-Keygen:Windows/Linux/macOS兼容性解决方案
  • 6款论文降AI率平台亲测:AI率直降安全线,学生党必入平价款 - 降AI小能手
  • Open Design性能优化:如何让AI设计响应时间缩短50%
  • 基于MCU的相角控制:实现吸尘器电机软启动与无级调速
  • 昆明名表回收上门服务怎么约?盘龙区实测经验分享 - 奢侈品回收评测
  • 【字节跳动】抖音直播间上热门三大核心指标:初始停留需超25秒、互动密度达标(每百人每分钟12次互动)、账号无隐性风控标签。精准开播时段建议选择11:50-13:20/18:40-20:10/21:10
  • 2026年澳洲留学服务水平高机构:五家优选品牌深度解析 - 科技焦点
  • 网易云音乐数据采集+分析+可视化一站式Python工具包(含Flask界面与情感分析)
  • Diff 算法
  • 2026青岛翡翠回收实测,无套路真实变现指南 - 奢侈品回收测评
  • 深度解析 Google Search Profiles 技术架构与实现机制
  • 100天iOS数据结构与算法实战:从零到一的iOS算法入门完全指南
  • 2026 新版广东多型号电线电缆回收机构盘点测评——工矿电力企业废旧线缆批量处置选企指南 - 广东再生资源回收
  • MCProtocolLib数据包处理指南:从握手到游戏状态的完整流程解析
  • 独立开发者全流程管理:从 MVP 到产品迭代的工程方法论
  • 2026年公立医院建筑设计哪家好 山东省建筑设计四院:山东有实力的医院建筑设计/医院设计/医院规划设计公司 - 资讯速览
  • 书匠策AI官网www.shujiangce.com|期刊论文写作,居然能“一键通关“?这个神器我先跪了!
  • wu.js核心函数解析:map、filter、reduce的迭代器版本实现原理
  • Node-Influx 性能基准测试终极指南:如何实现每秒百万行的数据处理能力 [特殊字符]
  • 2026佛山黄金首饰回收:六家正规平台分级推荐,添价收黄金奢侈品回收成本地变现首选 - 薛定谔的梨花猫
  • 激光雷达建图入门包:含推导文档、ROS可运行代码与动态演示
  • 告别手动导出:用Stimulsoft Reports.js + Vue CLI 3.x 打造动态数据报表页
  • 终极iPhone个性化指南:如何用Cowabunga Lite免费定制iOS 15+系统