主要改进: - 修复 google_one OAuth scopes 配置问题 - 添加 Gemini 账号配额展示组件 - 优化 Code Assist 类型检测逻辑 - 添加 OAuth 测试用例
71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
/**
|
|
* Admin Gemini API endpoints
|
|
* Handles Gemini OAuth flows for administrators
|
|
*/
|
|
|
|
import { apiClient } from '../client'
|
|
|
|
export interface GeminiAuthUrlResponse {
|
|
auth_url: string
|
|
session_id: string
|
|
state: string
|
|
}
|
|
|
|
export interface GeminiOAuthCapabilities {
|
|
ai_studio_oauth_enabled: boolean
|
|
required_redirect_uris: string[]
|
|
}
|
|
|
|
export interface GeminiAuthUrlRequest {
|
|
proxy_id?: number
|
|
project_id?: string
|
|
oauth_type?: 'code_assist' | 'google_one' | 'ai_studio'
|
|
}
|
|
|
|
export interface GeminiExchangeCodeRequest {
|
|
session_id: string
|
|
state: string
|
|
code: string
|
|
proxy_id?: number
|
|
oauth_type?: 'code_assist' | 'google_one' | 'ai_studio'
|
|
}
|
|
|
|
export type GeminiTokenInfo = {
|
|
access_token?: string
|
|
refresh_token?: string
|
|
token_type?: string
|
|
scope?: string
|
|
expires_in?: number
|
|
expires_at?: number
|
|
project_id?: string
|
|
oauth_type?: string
|
|
tier_id?: string
|
|
extra?: Record<string, unknown>
|
|
[key: string]: unknown
|
|
}
|
|
|
|
export async function generateAuthUrl(
|
|
payload: GeminiAuthUrlRequest
|
|
): Promise<GeminiAuthUrlResponse> {
|
|
const { data } = await apiClient.post<GeminiAuthUrlResponse>(
|
|
'/admin/gemini/oauth/auth-url',
|
|
payload
|
|
)
|
|
return data
|
|
}
|
|
|
|
export async function exchangeCode(payload: GeminiExchangeCodeRequest): Promise<GeminiTokenInfo> {
|
|
const { data } = await apiClient.post<GeminiTokenInfo>(
|
|
'/admin/gemini/oauth/exchange-code',
|
|
payload
|
|
)
|
|
return data
|
|
}
|
|
|
|
export async function getCapabilities(): Promise<GeminiOAuthCapabilities> {
|
|
const { data } = await apiClient.get<GeminiOAuthCapabilities>('/admin/gemini/oauth/capabilities')
|
|
return data
|
|
}
|
|
|
|
export default { generateAuthUrl, exchangeCode, getCapabilities }
|