MCPcopy Create free account
hub / github.com/AntiHub-Project/AntiHub / refreshToken

Function refreshToken

lib/api.ts:164–214  ·  view source on GitHub ↗

* 刷新 Token * 尝试从多个来源获取 refresh_token

()

Source from the content-addressed store, hash-verified

162 * 尝试从多个来源获取 refresh_token
163 */
164async function refreshToken(): Promise<RefreshTokenResponse> {
165 console.log('[refreshToken] 调用刷新接口');
166
167 // 尝试从多个来源获取 refresh_token
168 let refreshTokenValue = null;
169
170 // 1. 尝试从 localStorage 读取
171 if (typeof window !== 'undefined') {
172 refreshTokenValue = localStorage.getItem('refresh_token');
173 if (refreshTokenValue) {
174 console.log('[refreshToken] 从 localStorage 获取到 refresh_token');
175 }
176 }
177
178 // 2. 如果 localStorage 没有,尝试从非 httpOnly cookie 读取
179 if (!refreshTokenValue && typeof document !== 'undefined') {
180 const cookies = document.cookie.split(';');
181 for (const cookie of cookies) {
182 const [name, value] = cookie.trim().split('=');
183 if (name === 'refresh_token') {
184 refreshTokenValue = value;
185 console.log('[refreshToken] 从 cookie 获取到 refresh_token');
186 break;
187 }
188 }
189 }
190
191 if (!refreshTokenValue) {
192 console.error('[refreshToken] 无法获取 refresh_token');
193 throw new Error('No refresh token available');
194 }
195
196 const response = await fetch(`${API_BASE_URL}/api/auth/refresh`, {
197 method: 'POST',
198 headers: {
199 'Content-Type': 'application/json',
200 },
201 credentials: 'include', // 发送 cookies(以防后端也支持从 cookie 读取)
202 body: JSON.stringify({ refresh_token: refreshTokenValue }),
203 });
204
205 if (!response.ok) {
206 const error = await response.json().catch(() => ({ detail: 'Token refresh failed' }));
207 console.error('[refreshToken] 刷新失败:', error);
208 throw new Error('Token refresh failed');
209 }
210
211 const data = await response.json();
212 console.log('[refreshToken] 刷新成功');
213 return data;
214}
215
216/**
217 * 带自动刷新的 fetch 请求

Callers 4

fetchWithAuthFunction · 0.85
scheduleRefreshFunction · 0.85
generateImageFunction · 0.85
sendChatCompletionStreamFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected