diff --git a/example/client/client.go b/example/client/client.go index ea9d323..8e231e6 100644 --- a/example/client/client.go +++ b/example/client/client.go @@ -37,6 +37,10 @@ func main() { http.Redirect(w, r, u, http.StatusFound) }) + http.HandleFunc("/favicon.ico", func(w http.ResponseWriter, r *http.Request) { + http.ServeFile(w, r, "favicon.ico") + }) + http.HandleFunc("/oauth2", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() state := r.Form.Get("state") diff --git a/example/client/favicon.ico b/example/client/favicon.ico new file mode 100644 index 0000000..ff6ba6a Binary files /dev/null and b/example/client/favicon.ico differ diff --git a/example/server/server.go b/example/server/server.go index 794feba..a5c0b47 100644 --- a/example/server/server.go +++ b/example/server/server.go @@ -67,14 +67,18 @@ func main() { } var form url.Values + // If the handler is invoked after user does authorization, get the saved form. if v, ok := store.Get("ReturnUri"); ok { form = v.(url.Values) } + // When /authorize handler is first triggered from the client, form is + // empty. r.Form = form store.Delete("ReturnUri") store.Save() + // If r.Form has not been parsed, HandleAuthorizeRequest will parse it. err = srv.HandleAuthorizeRequest(w, r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) @@ -121,6 +125,7 @@ func userAuthorizeHandler(w http.ResponseWriter, r *http.Request) (userID string r.ParseForm() } + // Save the form for the later use when invoking /authorize handler. store.Set("ReturnUri", r.Form) store.Save()