feat: improve logging, tool compatibility, and endpoint configuration
This commit is contained in:
27
auth/oidc.go
27
auth/oidc.go
@@ -11,7 +11,8 @@ import (
|
||||
)
|
||||
|
||||
// RefreshToken 刷新 access token
|
||||
func RefreshToken(account *config.Account) (string, string, int64, error) {
|
||||
// Returns: accessToken, refreshToken, expiresAt, profileArn, error
|
||||
func RefreshToken(account *config.Account) (string, string, int64, string, error) {
|
||||
if account.AuthMethod == "social" {
|
||||
return refreshSocialToken(account.RefreshToken)
|
||||
}
|
||||
@@ -19,9 +20,9 @@ func RefreshToken(account *config.Account) (string, string, int64, error) {
|
||||
}
|
||||
|
||||
// refreshOIDCToken IdC/Builder ID token 刷新
|
||||
func refreshOIDCToken(refreshToken, clientID, clientSecret, region string) (string, string, int64, error) {
|
||||
func refreshOIDCToken(refreshToken, clientID, clientSecret, region string) (string, string, int64, string, error) {
|
||||
if clientID == "" || clientSecret == "" {
|
||||
return "", "", 0, fmt.Errorf("OIDC refresh requires clientId and clientSecret")
|
||||
return "", "", 0, "", fmt.Errorf("OIDC refresh requires clientId and clientSecret")
|
||||
}
|
||||
if region == "" {
|
||||
region = "us-east-1"
|
||||
@@ -42,31 +43,32 @@ func refreshOIDCToken(refreshToken, clientID, clientSecret, region string) (stri
|
||||
|
||||
resp, err := httpClient().Do(req)
|
||||
if err != nil {
|
||||
return "", "", 0, err
|
||||
return "", "", 0, "", err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
respBody, _ := io.ReadAll(resp.Body)
|
||||
return "", "", 0, fmt.Errorf("refresh failed: %d %s", resp.StatusCode, string(respBody))
|
||||
return "", "", 0, "", fmt.Errorf("refresh failed: %d %s", resp.StatusCode, string(respBody))
|
||||
}
|
||||
|
||||
var result struct {
|
||||
AccessToken string `json:"accessToken"`
|
||||
RefreshToken string `json:"refreshToken"`
|
||||
ExpiresIn int `json:"expiresIn"`
|
||||
ProfileArn string `json:"profileArn"`
|
||||
}
|
||||
|
||||
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
|
||||
return "", "", 0, err
|
||||
return "", "", 0, "", err
|
||||
}
|
||||
|
||||
expiresAt := time.Now().Unix() + int64(result.ExpiresIn)
|
||||
return result.AccessToken, result.RefreshToken, expiresAt, nil
|
||||
return result.AccessToken, result.RefreshToken, expiresAt, result.ProfileArn, nil
|
||||
}
|
||||
|
||||
// refreshSocialToken Social (GitHub/Google) token 刷新
|
||||
func refreshSocialToken(refreshToken string) (string, string, int64, error) {
|
||||
func refreshSocialToken(refreshToken string) (string, string, int64, string, error) {
|
||||
url := "https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken"
|
||||
|
||||
payload := map[string]string{
|
||||
@@ -79,25 +81,26 @@ func refreshSocialToken(refreshToken string) (string, string, int64, error) {
|
||||
|
||||
resp, err := httpClient().Do(req)
|
||||
if err != nil {
|
||||
return "", "", 0, err
|
||||
return "", "", 0, "", err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
respBody, _ := io.ReadAll(resp.Body)
|
||||
return "", "", 0, fmt.Errorf("refresh failed: %d %s", resp.StatusCode, string(respBody))
|
||||
return "", "", 0, "", fmt.Errorf("refresh failed: %d %s", resp.StatusCode, string(respBody))
|
||||
}
|
||||
|
||||
var result struct {
|
||||
AccessToken string `json:"accessToken"`
|
||||
RefreshToken string `json:"refreshToken"`
|
||||
ExpiresIn int `json:"expiresIn"`
|
||||
ProfileArn string `json:"profileArn"`
|
||||
}
|
||||
|
||||
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
|
||||
return "", "", 0, err
|
||||
return "", "", 0, "", err
|
||||
}
|
||||
|
||||
expiresAt := time.Now().Unix() + int64(result.ExpiresIn)
|
||||
return result.AccessToken, result.RefreshToken, expiresAt, nil
|
||||
return result.AccessToken, result.RefreshToken, expiresAt, result.ProfileArn, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user