From b0214dd465d0a2a5f71cf8cd81b3468b4c82e1f7 Mon Sep 17 00:00:00 2001 From: Joris Coenen Date: Fri, 3 Jul 2020 16:55:47 +0200 Subject: [PATCH] Also redirect errors in getting token to the custom result page Otherwise cancelling the OAuth process results in a lame text-only page. --- internals/oauthorizer/callback_handler.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/internals/oauthorizer/callback_handler.go b/internals/oauthorizer/callback_handler.go index f568440a..35b75f07 100644 --- a/internals/oauthorizer/callback_handler.go +++ b/internals/oauthorizer/callback_handler.go @@ -78,15 +78,20 @@ func (s CallbackHandler) handleRequest(callback func(string) error, done func()) var once sync.Once var redirectURL *url.URL return func(w http.ResponseWriter, r *http.Request) { - code, err := s.authorizer.ParseResponse(r, s.state) - if err != nil { - fmt.Fprintf(w, "Error: %s", err) - return - } - once.Do(func() { - err = callback(code) redirectURL = s.baseRedirectURL + err := func() error { + code, err := s.authorizer.ParseResponse(r, s.state) + if err != nil { + return err + } + + err = callback(code) + if err != nil { + return err + } + return nil + }() if err != nil { q := redirectURL.Query() q.Set("error", err.Error())