package main import ( "fmt" "net/http" "os/exec" ) func openBrowser(url string) error { cmd := exec.Command("xdg-open", url) return cmd.Start() } func startServer(codeChannel chan string) { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { code := r.URL.Query().Get("code") if code != "" { codeChannel <- code fmt.Fprintf(w, "Authorization successful! You can now close this window.") } else { http.Error(w, "Authorization failed", http.StatusBadRequest) } }) err := http.ListenAndServe(":3000", nil) if err != nil { fmt.Printf("Error starting server: %v\n", err) } } func GetOAuth() (string, error) { url := fmt.Sprintf("%s?%s&%s&%s&%s&%s", "https://id.twitch.tv/oauth2/authorize", "response_type=code", fmt.Sprintf("client_id=%s", clientSecrets.ClientID), "redirect_uri=http://localhost:3000", "scope=user%3Aread%3Afollows", "state=xsscheckbasic101", ) err := openBrowser(url) if err != nil { return "", fmt.Errorf("failed to open browser: %v", err) } codeChannel := make(chan string) go startServer(codeChannel) code := <-codeChannel return code, nil }