mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-02 20:40:52 +08:00
fix(auth): correct antigravity oauth redirect and expiry
This commit is contained in:
@@ -1398,7 +1398,7 @@ func (h *Handler) RequestAntigravityToken(c *gin.Context) {
|
|||||||
|
|
||||||
fmt.Println("Initializing Antigravity authentication...")
|
fmt.Println("Initializing Antigravity authentication...")
|
||||||
|
|
||||||
authSvc := antigravity.NewAntigravityAuth(h.cfg)
|
authSvc := antigravity.NewAntigravityAuth(h.cfg, nil)
|
||||||
|
|
||||||
state, errState := misc.GenerateRandomState()
|
state, errState := misc.GenerateRandomState()
|
||||||
if errState != nil {
|
if errState != nil {
|
||||||
@@ -1408,9 +1408,7 @@ func (h *Handler) RequestAntigravityToken(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
redirectURI := fmt.Sprintf("http://localhost:%d/oauth-callback", antigravity.CallbackPort)
|
redirectURI := fmt.Sprintf("http://localhost:%d/oauth-callback", antigravity.CallbackPort)
|
||||||
authURL := authSvc.BuildAuthURL(state)
|
authURL := authSvc.BuildAuthURL(state, redirectURI)
|
||||||
// Override redirect URI if needed (BuildAuthURL hardcodes it)
|
|
||||||
authURL = strings.ReplaceAll(authURL, fmt.Sprintf("http://localhost:%d/oauth-callback", antigravity.CallbackPort), redirectURI)
|
|
||||||
|
|
||||||
RegisterOAuthSession(state, "antigravity")
|
RegisterOAuthSession(state, "antigravity")
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import (
|
|||||||
type TokenResponse struct {
|
type TokenResponse struct {
|
||||||
AccessToken string `json:"access_token"`
|
AccessToken string `json:"access_token"`
|
||||||
RefreshToken string `json:"refresh_token"`
|
RefreshToken string `json:"refresh_token"`
|
||||||
ExpiresIn int64 `json:"expires_token"`
|
ExpiresIn int64 `json:"expires_in"`
|
||||||
TokenType string `json:"token_type"`
|
TokenType string `json:"token_type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,20 +34,29 @@ type AntigravityAuth struct {
|
|||||||
httpClient *http.Client
|
httpClient *http.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewAntigravityAuth creates a new Antigravity auth service
|
// NewAntigravityAuth creates a new Antigravity auth service.
|
||||||
func NewAntigravityAuth(cfg *config.Config) *AntigravityAuth {
|
func NewAntigravityAuth(cfg *config.Config, httpClient *http.Client) *AntigravityAuth {
|
||||||
|
if httpClient != nil {
|
||||||
|
return &AntigravityAuth{httpClient: httpClient}
|
||||||
|
}
|
||||||
|
if cfg == nil {
|
||||||
|
cfg = &config.Config{}
|
||||||
|
}
|
||||||
return &AntigravityAuth{
|
return &AntigravityAuth{
|
||||||
httpClient: util.SetProxy(&cfg.SDKConfig, &http.Client{}),
|
httpClient: util.SetProxy(&cfg.SDKConfig, &http.Client{}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// BuildAuthURL generates the OAuth authorization URL
|
// BuildAuthURL generates the OAuth authorization URL.
|
||||||
func (o *AntigravityAuth) BuildAuthURL(state string) string {
|
func (o *AntigravityAuth) BuildAuthURL(state, redirectURI string) string {
|
||||||
|
if strings.TrimSpace(redirectURI) == "" {
|
||||||
|
redirectURI = fmt.Sprintf("http://localhost:%d/oauth-callback", CallbackPort)
|
||||||
|
}
|
||||||
params := url.Values{}
|
params := url.Values{}
|
||||||
params.Set("access_type", "offline")
|
params.Set("access_type", "offline")
|
||||||
params.Set("client_id", ClientID)
|
params.Set("client_id", ClientID)
|
||||||
params.Set("prompt", "consent")
|
params.Set("prompt", "consent")
|
||||||
params.Set("redirect_uri", fmt.Sprintf("http://localhost:%d/oauth-callback", CallbackPort))
|
params.Set("redirect_uri", redirectURI)
|
||||||
params.Set("response_type", "code")
|
params.Set("response_type", "code")
|
||||||
params.Set("scope", strings.Join(Scopes, " "))
|
params.Set("scope", strings.Join(Scopes, " "))
|
||||||
params.Set("state", state)
|
params.Set("state", state)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ func (AntigravityAuthenticator) Login(ctx context.Context, cfg *config.Config, o
|
|||||||
callbackPort = opts.CallbackPort
|
callbackPort = opts.CallbackPort
|
||||||
}
|
}
|
||||||
|
|
||||||
authSvc := antigravity.NewAntigravityAuth(cfg)
|
authSvc := antigravity.NewAntigravityAuth(cfg, nil)
|
||||||
|
|
||||||
state, err := misc.GenerateRandomState()
|
state, err := misc.GenerateRandomState()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -67,9 +67,7 @@ func (AntigravityAuthenticator) Login(ctx context.Context, cfg *config.Config, o
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
redirectURI := fmt.Sprintf("http://localhost:%d/oauth-callback", port)
|
redirectURI := fmt.Sprintf("http://localhost:%d/oauth-callback", port)
|
||||||
authURL := authSvc.BuildAuthURL(state)
|
authURL := authSvc.BuildAuthURL(state, redirectURI)
|
||||||
// Override redirect URI in authURL
|
|
||||||
authURL = strings.ReplaceAll(authURL, fmt.Sprintf("http://localhost:%d/oauth-callback", antigravity.CallbackPort), redirectURI)
|
|
||||||
|
|
||||||
if !opts.NoBrowser {
|
if !opts.NoBrowser {
|
||||||
fmt.Println("Opening browser for antigravity authentication")
|
fmt.Println("Opening browser for antigravity authentication")
|
||||||
@@ -256,7 +254,6 @@ func startAntigravityCallbackServer(port int) (*http.Server, int, <-chan callbac
|
|||||||
// FetchAntigravityProjectID exposes project discovery for external callers.
|
// FetchAntigravityProjectID exposes project discovery for external callers.
|
||||||
func FetchAntigravityProjectID(ctx context.Context, accessToken string, httpClient *http.Client) (string, error) {
|
func FetchAntigravityProjectID(ctx context.Context, accessToken string, httpClient *http.Client) (string, error) {
|
||||||
cfg := &config.Config{}
|
cfg := &config.Config{}
|
||||||
// Set the httpClient if provided (for proxy support)
|
authSvc := antigravity.NewAntigravityAuth(cfg, httpClient)
|
||||||
authSvc := antigravity.NewAntigravityAuth(cfg)
|
|
||||||
return authSvc.FetchProjectID(ctx, accessToken)
|
return authSvc.FetchProjectID(ctx, accessToken)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user