后端新增 ValidateRefreshToken service 方法和 POST /oauth/refresh-token 端点, 前端新增 API/Composable/UI 集成,OAuthAuthorizationFlow i18n 动态化, 支持在 Antigravity 创建账号时批量粘贴 Refresh Token 自动验证并创建账号。
71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
/**
|
|
* Admin Antigravity API endpoints
|
|
* Handles Antigravity (Google Cloud AI Companion) OAuth flows for administrators
|
|
*/
|
|
|
|
import { apiClient } from '../client'
|
|
|
|
export interface AntigravityAuthUrlResponse {
|
|
auth_url: string
|
|
session_id: string
|
|
state: string
|
|
}
|
|
|
|
export interface AntigravityAuthUrlRequest {
|
|
proxy_id?: number
|
|
}
|
|
|
|
export interface AntigravityExchangeCodeRequest {
|
|
session_id: string
|
|
state: string
|
|
code: string
|
|
proxy_id?: number
|
|
}
|
|
|
|
export interface AntigravityTokenInfo {
|
|
access_token?: string
|
|
refresh_token?: string
|
|
token_type?: string
|
|
expires_at?: number | string
|
|
expires_in?: number
|
|
project_id?: string
|
|
email?: string
|
|
[key: string]: unknown
|
|
}
|
|
|
|
export async function generateAuthUrl(
|
|
payload: AntigravityAuthUrlRequest
|
|
): Promise<AntigravityAuthUrlResponse> {
|
|
const { data } = await apiClient.post<AntigravityAuthUrlResponse>(
|
|
'/admin/antigravity/oauth/auth-url',
|
|
payload
|
|
)
|
|
return data
|
|
}
|
|
|
|
export async function exchangeCode(
|
|
payload: AntigravityExchangeCodeRequest
|
|
): Promise<AntigravityTokenInfo> {
|
|
const { data } = await apiClient.post<AntigravityTokenInfo>(
|
|
'/admin/antigravity/oauth/exchange-code',
|
|
payload
|
|
)
|
|
return data
|
|
}
|
|
|
|
export async function refreshAntigravityToken(
|
|
refreshToken: string,
|
|
proxyId?: number | null
|
|
): Promise<AntigravityTokenInfo> {
|
|
const payload: Record<string, any> = { refresh_token: refreshToken }
|
|
if (proxyId) payload.proxy_id = proxyId
|
|
|
|
const { data } = await apiClient.post<AntigravityTokenInfo>(
|
|
'/admin/antigravity/oauth/refresh-token',
|
|
payload
|
|
)
|
|
return data
|
|
}
|
|
|
|
export default { generateAuthUrl, exchangeCode, refreshAntigravityToken }
|