From b7c6d040ddd9a77f96f5ca36694e9d37cc751ab1 Mon Sep 17 00:00:00 2001 From: shaw Date: Wed, 31 Dec 2025 10:33:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DAntigravity=20token?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E9=97=B4=E9=9A=94=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/service/antigravity_oauth_service.go | 5 ++++- .../internal/service/antigravity_token_refresher.go | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/backend/internal/service/antigravity_oauth_service.go b/backend/internal/service/antigravity_oauth_service.go index 9125999f..ecf0a553 100644 --- a/backend/internal/service/antigravity_oauth_service.go +++ b/backend/internal/service/antigravity_oauth_service.go @@ -174,7 +174,10 @@ func (s *AntigravityOAuthService) RefreshToken(ctx context.Context, refreshToken client := antigravity.NewClient(proxyURL) tokenResp, err := client.RefreshToken(ctx, refreshToken) if err == nil { - expiresAt := time.Now().Unix() + tokenResp.ExpiresIn - 300 + now := time.Now() + expiresAt := now.Unix() + tokenResp.ExpiresIn - 300 + fmt.Printf("[AntigravityOAuth] Token refreshed: expires_in=%d, expires_at=%d (%s)\n", + tokenResp.ExpiresIn, expiresAt, time.Unix(expiresAt, 0).Format("2006-01-02 15:04:05")) return &AntigravityTokenInfo{ AccessToken: tokenResp.AccessToken, RefreshToken: tokenResp.RefreshToken, diff --git a/backend/internal/service/antigravity_token_refresher.go b/backend/internal/service/antigravity_token_refresher.go index 1d2b8f15..8ee2d25c 100644 --- a/backend/internal/service/antigravity_token_refresher.go +++ b/backend/internal/service/antigravity_token_refresher.go @@ -6,6 +6,12 @@ import ( "time" ) +const ( + // antigravityRefreshWindow Antigravity token 提前刷新窗口:15分钟 + // Google OAuth token 有效期55分钟,提前15分钟刷新 + antigravityRefreshWindow = 15 * time.Minute +) + // AntigravityTokenRefresher 实现 TokenRefresher 接口 type AntigravityTokenRefresher struct { antigravityOAuthService *AntigravityOAuthService @@ -23,7 +29,8 @@ func (r *AntigravityTokenRefresher) CanRefresh(account *Account) bool { } // NeedsRefresh 检查账户是否需要刷新 -func (r *AntigravityTokenRefresher) NeedsRefresh(account *Account, refreshWindow time.Duration) bool { +// Antigravity 使用固定的10分钟刷新窗口,忽略全局配置 +func (r *AntigravityTokenRefresher) NeedsRefresh(account *Account, _ time.Duration) bool { if !r.CanRefresh(account) { return false } @@ -36,7 +43,7 @@ func (r *AntigravityTokenRefresher) NeedsRefresh(account *Account, refreshWindow return false } expiryTime := time.Unix(expiresAt, 0) - return time.Until(expiryTime) < refreshWindow + return time.Until(expiryTime) < antigravityRefreshWindow } // Refresh 执行 token 刷新