{"record":{"id":"6b17007f27248b7a","repo":"chatboxai/chatbox","slug":"token-refresh-failed-please-login-again","errorCode":null,"errorMessage":"Token refresh failed, please login again","messagePattern":"Token refresh failed, please login again","errorType":"exception","errorClass":"ApiError","httpStatus":null,"severity":"error","filePath":"src/shared/request/request.ts","lineNumber":272,"sourceCode":"\n          // 防止并发刷新：如果已有刷新请求，等待它完成\n          if (!refreshPromise) {\n            refreshPromise = (async () => {\n              try {\n                const currentTokens = await getTokens()\n                if (!currentTokens) {\n                  throw new ApiError('No refresh token available')\n                }\n\n                console.debug('🔑 Refreshing access token with refresh token...')\n                const newTokens = await refreshTokens(currentTokens.refreshToken)\n                console.debug('✅ Token refreshed successfully')\n                return newTokens\n              } catch (error) {\n                console.error('❌ Failed to refresh token:', error)\n                // 刷新失败，清除所有 tokens\n                await clearTokens()\n                throw new ApiError('Token refresh failed, please login again')\n              } finally {\n                refreshPromise = null\n              }\n            })()\n          }\n\n          // 等待刷新完成\n          const newTokens = await refreshPromise\n\n          // 使用新 token 重试请求\n          init = {\n            ...init,\n            headers: buildHeaders(newTokens.accessToken),\n          }\n\n          console.debug('🔄 Retrying request with new token...')\n          const retryRes = await fetch(url, init)\n","sourceCodeStart":254,"sourceCodeEnd":290,"githubUrl":"https://github.com/chatboxai/chatbox/blob/81571269addb6bafb589a920b2883f1e1e084fd1/src/shared/request/request.ts#L254-L290","documentation":"Error \"Token refresh failed, please login again\" thrown in chatboxai/chatbox.","triggerScenarios":"Thrown at src/shared/request/request.ts:272 when the library encounters an invalid state.","commonSituations":"Occurs in src/shared/request/request.ts when the token refresh request itself fails; the user must log in again.","solutions":["Log in again; all tokens were cleared after the refresh failure.","Check network connectivity to the auth server.","If the refresh token was revoked or expired server-side, re-authentication is required."],"exampleFix":"} catch (error) {\n  await clearTokens()\n  // Show login screen; refresh token no longer valid\n  throw new ApiError('Token refresh failed, please login again')\n}","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"81571269addb6bafb589a920b2883f1e1e084fd1","analyzedAt":"2026-08-12T21:51:44.981Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}