fix: Antigravity project_id 获取优化
- API URL 改为只使用 prod 端点 - 刷新 token 时每次调用 LoadCodeAssist 更新 project_id - 移除随机生成 project_id 的兜底逻辑
This commit is contained in:
@@ -42,12 +42,9 @@ const (
|
|||||||
URLAvailabilityTTL = 5 * time.Minute
|
URLAvailabilityTTL = 5 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
// BaseURLs 定义 Antigravity API 端点,按优先级排序
|
// BaseURLs 定义 Antigravity API 端点
|
||||||
// fallback 顺序: sandbox → daily → prod
|
|
||||||
var BaseURLs = []string{
|
var BaseURLs = []string{
|
||||||
"https://daily-cloudcode-pa.sandbox.googleapis.com", // sandbox
|
"https://cloudcode-pa.googleapis.com", // prod
|
||||||
"https://daily-cloudcode-pa.googleapis.com", // daily
|
|
||||||
"https://cloudcode-pa.googleapis.com", // prod
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// BaseURL 默认 URL(保持向后兼容)
|
// BaseURL 默认 URL(保持向后兼容)
|
||||||
@@ -240,24 +237,3 @@ func BuildAuthorizationURL(state, codeChallenge string) string {
|
|||||||
|
|
||||||
return fmt.Sprintf("%s?%s", AuthorizeURL, params.Encode())
|
return fmt.Sprintf("%s?%s", AuthorizeURL, params.Encode())
|
||||||
}
|
}
|
||||||
|
|
||||||
// GenerateMockProjectID 生成随机 project_id(当 API 不返回时使用)
|
|
||||||
// 格式:{形容词}-{名词}-{5位随机字符}
|
|
||||||
func GenerateMockProjectID() string {
|
|
||||||
adjectives := []string{"useful", "bright", "swift", "calm", "bold"}
|
|
||||||
nouns := []string{"fuze", "wave", "spark", "flow", "core"}
|
|
||||||
|
|
||||||
randBytes, _ := GenerateRandomBytes(7)
|
|
||||||
|
|
||||||
adj := adjectives[int(randBytes[0])%len(adjectives)]
|
|
||||||
noun := nouns[int(randBytes[1])%len(nouns)]
|
|
||||||
|
|
||||||
// 生成 5 位随机字符(a-z0-9)
|
|
||||||
const charset = "abcdefghijklmnopqrstuvwxyz0123456789"
|
|
||||||
suffix := make([]byte, 5)
|
|
||||||
for i := 0; i < 5; i++ {
|
|
||||||
suffix[i] = charset[int(randBytes[i+2])%len(charset)]
|
|
||||||
}
|
|
||||||
|
|
||||||
return fmt.Sprintf("%s-%s-%s", adj, noun, string(suffix))
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -149,12 +149,6 @@ func (s *AntigravityOAuthService) ExchangeCode(ctx context.Context, input *Antig
|
|||||||
result.ProjectID = loadResp.CloudAICompanionProject
|
result.ProjectID = loadResp.CloudAICompanionProject
|
||||||
}
|
}
|
||||||
|
|
||||||
// 兜底:随机生成 project_id
|
|
||||||
if result.ProjectID == "" {
|
|
||||||
result.ProjectID = antigravity.GenerateMockProjectID()
|
|
||||||
fmt.Printf("[AntigravityOAuth] 使用随机生成的 project_id: %s\n", result.ProjectID)
|
|
||||||
}
|
|
||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,16 +230,25 @@ func (s *AntigravityOAuthService) RefreshAccountToken(ctx context.Context, accou
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保留原有的 project_id 和 email
|
// 保留原有的 email
|
||||||
existingProjectID := strings.TrimSpace(account.GetCredential("project_id"))
|
|
||||||
if existingProjectID != "" {
|
|
||||||
tokenInfo.ProjectID = existingProjectID
|
|
||||||
}
|
|
||||||
existingEmail := strings.TrimSpace(account.GetCredential("email"))
|
existingEmail := strings.TrimSpace(account.GetCredential("email"))
|
||||||
if existingEmail != "" {
|
if existingEmail != "" {
|
||||||
tokenInfo.Email = existingEmail
|
tokenInfo.Email = existingEmail
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 每次刷新都调用 LoadCodeAssist 更新 project_id
|
||||||
|
client := antigravity.NewClient(proxyURL)
|
||||||
|
loadResp, _, err := client.LoadCodeAssist(ctx, tokenInfo.AccessToken)
|
||||||
|
if err != nil {
|
||||||
|
// 失败时保留原有的 project_id
|
||||||
|
existingProjectID := strings.TrimSpace(account.GetCredential("project_id"))
|
||||||
|
if existingProjectID != "" {
|
||||||
|
tokenInfo.ProjectID = existingProjectID
|
||||||
|
}
|
||||||
|
} else if loadResp != nil && loadResp.CloudAICompanionProject != "" {
|
||||||
|
tokenInfo.ProjectID = loadResp.CloudAICompanionProject
|
||||||
|
}
|
||||||
|
|
||||||
return tokenInfo, nil
|
return tokenInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,11 +31,6 @@ func (f *AntigravityQuotaFetcher) FetchQuota(ctx context.Context, account *Accou
|
|||||||
accessToken := account.GetCredential("access_token")
|
accessToken := account.GetCredential("access_token")
|
||||||
projectID := account.GetCredential("project_id")
|
projectID := account.GetCredential("project_id")
|
||||||
|
|
||||||
// 如果没有 project_id,生成一个随机的
|
|
||||||
if projectID == "" {
|
|
||||||
projectID = antigravity.GenerateMockProjectID()
|
|
||||||
}
|
|
||||||
|
|
||||||
client := antigravity.NewClient(proxyURL)
|
client := antigravity.NewClient(proxyURL)
|
||||||
|
|
||||||
// 调用 API 获取配额
|
// 调用 API 获取配额
|
||||||
|
|||||||
Reference in New Issue
Block a user