package utils import ( "encoding/json" "fmt" "io" "net/http" ) type GoogleTokenInfo struct { Email string `json:"email"` EmailVerified string `json:"email_verified"` Name string `json:"name"` Picture string `json:"picture"` Sub string `json:"sub"` } func VerifyGoogleToken(idToken string) (*GoogleTokenInfo, error) { resp, err := http.Get(fmt.Sprintf("https://oauth2.googleapis.com/tokeninfo?id_token=%s", idToken)) if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("invalid token") } body, err := io.ReadAll(resp.Body) if err != nil { return nil, err } var tokenInfo GoogleTokenInfo if err := json.Unmarshal(body, &tokenInfo); err != nil { return nil, err } return &tokenInfo, nil }