Skip to content

fix: Gemini/Droid 账户连通性测试失败 — ensureValidToken 未实现 + Gemini 端点/请求格式错误 #1018

@DragonFSKY

Description

@DragonFSKY

问题描述

管理后台对 Gemini OAuth 账户执行连通性测试时报错:

geminiAccountService.ensureValidToken is not a function

根因

PR #859 (feat/optimize) 在路由层调用了 ensureValidToken,但从未在对应的 service 中实现该方法:

  • geminiAccounts.js:524 调用 geminiAccountService.ensureValidToken() — 未实现
  • droidAccounts.js:619 调用 droidAccountService.ensureValidToken() — 未实现

额外问题

即使补齐方法,Gemini 测试仍会失败,因为测试路由使用了错误的 API 端点和请求格式:

项目 修复前(错误) 修复后(正确)
端点 generativelanguage.googleapis.com/v1beta cloudcode-pa.googleapis.com/v1internal
认证 Bearer token + 需要 generative-language scope Bearer token + cloud-platform scope ✅
请求体 { contents, generationConfig } 顶层 { model, project, request: { contents, generationConfig } }
Headers 仅 Content-Type + Authorization 额外需要 User-Agent、X-Goog-Api-Client、Client-Metadata、Accept

影响范围

  • 管理后台 Gemini 账户「测试」按钮完全不可用
  • 管理后台 Droid 账户「测试」按钮同样受影响(缺少方法,但端点和请求格式无需修改)
  • 不影响正常的 API 转发功能

修复方案(3 个文件)

  1. src/services/account/geminiAccountService.js — 新增 ensureValidToken(),先检查 token 有效性(快速路径),过期时再刷新
  2. src/services/account/droidAccountService.js — 新增 ensureValidToken(),封装已有的 getValidAccessToken()
  3. src/routes/admin/geminiAccounts.js — 修正测试路由:切换到 cloudcode-pa 端点、request 包装体结构、补齐必要 headers、兼容嵌套响应解析

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions