unauthorized: token: [REDACTED] "error": { "message": "Your session has ended. P...
错误信息
unexpected status 503 Service Unavailable: CC Switch local proxy failed while handling Codex endpoint /responses. Provider: My Codex; model: gpt-6-sol; upstream_status: HTTP 503; cause: auth_unavailable: no auth available (providers=codex, model=gpt-6-sol; last upstream error: unauthorized: token: [REDACTED] "error": { "message": "Your session has ended. Please log in again.", "type": "invalid_request_error", "param": null, "code": "refresh_token_invalidated" } }), url: http://127.0.0.1:15721/v1/responses
AI 解决方案
🌐 错误翻译
原文:unexpected status 503 Service Unavailable: CC Switch local proxy failed while handling Codex endpoint /responses. Provider: My Codex; model: gpt-6-sol; upstream_status: HTTP 503; cause: auth_unavailable: no auth available (providers=codex, model=gpt-6-sol; last upstream error: unauthorized: token: [REDACTED] "error": { "message": "Your session has ended. Please log in again.", "type": "invalid_request_error", "param": null, "code": "refresh_token_invalidated" } }), url: http://127.0.0.1:15721/v1/responses
译文:意外的状态码503服务不可用:在处理Codex端点/responses时,CC Switch本地代理失败。提供商:My Codex;模型:gpt-6-sol;上游状态:HTTP 503;原因:身份验证不可用:无可用身份验证(提供商=codex,模型=gpt-6-sol;最后一次上游错误:未授权:令牌:[已隐藏] "error": { "message": "您的会话已结束。请重新登录。", "type": "invalid_request_error", "param": null, "code": "refresh_token_invalidated" } }),网址:http://127.0.0.1:15721/v1/responses
🎯 原因分析
根本原因是身份验证令牌失效,核心是
refresh_token_invalidated(刷新令牌无效),导致API调用时无有效凭据,上游服务返回401未授权错误,最终代理层返回503服务不可用。💡 解决方案
// 1. 重新登录获取新的访问令牌和刷新令牌
const loginRequest = await fetch('http://127.0.0.1:15721/v1/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
username: 'your_username',
password: 'your_password'
})
});
const { access_token, refresh_token } = await loginRequest.json();
// 2. 存储有效令牌并添加令牌刷新逻辑
const tokenStore = {
access_token,
refresh_token,
expires_at: Date.now() + 3600 * 1000 // 假设令牌有效期1小时
};
// 请求拦截器:自动刷新失效令牌
async function requestWithAuthRefresh(url, options = {}) {
const headers = { ...options.headers, Authorization: `Bearer ${tokenStore.access_token}` };
let response = await fetch(url, { ...options, headers });
// 若返回401,尝试用刷新令牌换取新令牌
if (response.status === 401 && tokenStore.refresh_token) {
const refreshRes = await fetch('http://127.0.0.1:15721/v1/auth/refresh', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ refresh_token: tokenStore.refresh_token })
});
if (refreshRes.ok) {
const newTokens = await refreshRes.json();
Object.assign(tokenStore, newTokens, { expires_at: Date.now() + 3600 * 1000 });
headers.Authorization = `Bearer ${tokenStore.access_token}`;
response = await fetch(url, { ...options, headers });
} else {
// 刷新失败,需重新登录
console.error('刷新令牌失败,请重新登录');
throw new Error('令牌刷新失败,需重新登录');
}
}
return response;
}
// 3. 使用带身份验证的请求发起业务调用
const apiResponse = await requestWithAuthRefresh('http://127.0.0.1:15721/v1/responses', {
method: 'POST',
body: JSON.stringify({ model: 'gpt-6-sol', messages: [{ role: 'user', content: '你好' }] })
});
🛡️ 预防措施
Axios配合axios-retry和自定义拦截器,或Postman的身份验证管理器,简化令牌管理流程。