feat(frontend): 添加 Gemini OAuth 能力查询 API

- 添加 GeminiOAuthCapabilities 类型定义
- 添加 getCapabilities API 函数
- useGeminiOAuth composable 导出 getCapabilities 方法
This commit is contained in:
ianshaw
2025-12-25 23:52:26 -08:00
parent 632318ad33
commit 1bec35999b
2 changed files with 23 additions and 2 deletions

View File

@@ -11,6 +11,11 @@ export interface GeminiAuthUrlResponse {
state: string
}
export interface GeminiOAuthCapabilities {
ai_studio_oauth_enabled: boolean
required_redirect_uris: string[]
}
export interface GeminiAuthUrlRequest {
proxy_id?: number
project_id?: string
@@ -45,4 +50,9 @@ export async function exchangeCode(payload: GeminiExchangeCodeRequest): Promise<
return data
}
export default { generateAuthUrl, exchangeCode }
export async function getCapabilities(): Promise<GeminiOAuthCapabilities> {
const { data } = await apiClient.get<GeminiOAuthCapabilities>('/admin/gemini/oauth/capabilities')
return data
}
export default { generateAuthUrl, exchangeCode, getCapabilities }

View File

@@ -2,6 +2,7 @@ import { ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { useAppStore } from '@/stores/app'
import { adminAPI } from '@/api/admin'
import type { GeminiOAuthCapabilities } from '@/api/admin/gemini'
export interface GeminiTokenInfo {
access_token?: string
@@ -119,6 +120,15 @@ export function useGeminiOAuth() {
}
}
const getCapabilities = async (): Promise<GeminiOAuthCapabilities | null> => {
try {
return await adminAPI.gemini.getCapabilities()
} catch (err: any) {
// Capabilities are optional for older servers; don't block the UI.
return null
}
}
return {
authUrl,
sessionId,
@@ -128,6 +138,7 @@ export function useGeminiOAuth() {
resetState,
generateAuthUrl,
exchangeAuthCode,
buildCredentials
buildCredentials,
getCapabilities
}
}