mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 00:53:33 +00:00
feat: 优化 Gemini OAuth 授权流程,使用固定的 localhost 回调地址
- 将 Gemini OAuth 回调地址固定为 http://localhost:45462 - 更新前端提示文字为"复制oauth后的链接" - 实现自动提取 localhost:45462 链接中的 code 参数功能 - 删除不再需要的 web/auth_gemini 路由 - 添加详细的用户操作说明和错误处理提示 - 支持两种输入方式:完整链接或仅授权码 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -406,10 +406,8 @@ router.post('/gemini-accounts/generate-auth-url', authenticateAdmin, async (req,
|
||||
try {
|
||||
const { state } = req.body;
|
||||
|
||||
// 构建 redirect_uri,使用当前服务的地址
|
||||
const protocol = req.protocol;
|
||||
const host = req.get('host');
|
||||
const redirectUri = `${protocol}://${host}/web/auth_gemini`;
|
||||
// 使用固定的 localhost:45462 作为回调地址
|
||||
const redirectUri = 'http://localhost:45462';
|
||||
|
||||
logger.info(`Generating Gemini OAuth URL with redirect_uri: ${redirectUri}`);
|
||||
|
||||
@@ -420,7 +418,7 @@ router.post('/gemini-accounts/generate-auth-url', authenticateAdmin, async (req,
|
||||
await redis.setOAuthSession(sessionId, {
|
||||
state: authState,
|
||||
type: 'gemini',
|
||||
redirectUri, // 保存 redirect_uri 用于 token 交换
|
||||
redirectUri: redirectUri, // 保存固定的 redirect_uri 用于 token 交换
|
||||
createdAt: new Date().toISOString()
|
||||
});
|
||||
|
||||
@@ -470,15 +468,9 @@ router.post('/gemini-accounts/exchange-code', authenticateAdmin, async (req, res
|
||||
return res.status(400).json({ error: 'Authorization code is required' });
|
||||
}
|
||||
|
||||
// 如果提供了 sessionId,从会话中获取 redirect_uri
|
||||
let redirectUri = null;
|
||||
if (sessionId) {
|
||||
const oauthSession = await redis.getOAuthSession(sessionId);
|
||||
if (oauthSession && oauthSession.redirectUri) {
|
||||
redirectUri = oauthSession.redirectUri;
|
||||
logger.info(`Using redirect_uri from session: ${redirectUri}`);
|
||||
}
|
||||
}
|
||||
// 使用固定的 localhost:45462 作为 redirect_uri
|
||||
const redirectUri = 'http://localhost:45462';
|
||||
logger.info(`Using fixed redirect_uri: ${redirectUri}`);
|
||||
|
||||
const tokens = await geminiAccountService.exchangeCodeForTokens(code, redirectUri);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user