func login(c *oauth2.Config, s sessions.Session, w http.ResponseWriter, r *http.Request) { next := extractPath(r.URL.Query().Get(keyNextPage)) if s.Get(keyToken) == nil { // User is not logged in. if next == "" { next = "/" } http.Redirect(w, r, c.AuthCodeURL(next), codeRedirect) return } // No need to login, redirect to the next page. http.Redirect(w, r, next, codeRedirect) }
func login(opts *Options, config *oauth2.Config, s sessions.Session, w http.ResponseWriter, r *http.Request) { next := extractPath(r.URL.Query().Get(keyNextPage)) if s.Get(keyToken) == nil { // User is not logged in. if next == "" { next = "/" } http.Redirect(w, r, config.AuthCodeURL(next, oauth2.AccessTypeOffline), http.StatusFound) return } // No need to login, redirect to the next page. http.Redirect(w, r, next, http.StatusFound) }
func handleOAuth2Callback(c *oauth2.Config, s sessions.Session, w http.ResponseWriter, r *http.Request) { next := extractPath(r.URL.Query().Get("state")) code := r.URL.Query().Get("code") t, err := c.NewTransportWithCode(code) if err != nil { // Pass the error message, or allow dev to provide its own // error handler. http.Redirect(w, r, PathError, codeRedirect) return } // Store the credentials in the session. val, _ := json.Marshal(t.Token()) s.Set(keyToken, val) http.Redirect(w, r, next, codeRedirect) }
func handleOAuth2Callback(opts *Options, config *oauth2.Config, s sessions.Session, w http.ResponseWriter, r *http.Request) { next := extractPath(r.URL.Query().Get("state")) code := r.URL.Query().Get("code") t, err := config.Exchange(oauth2.NoContext, code) if err != nil { // Pass the error message, or allow dev to provide its own // error handler. http.Redirect(w, r, PathError, http.StatusFound) return } // Store the credentials in the session. val, _ := json.Marshal(t) s.Set(keyToken, val) http.Redirect(w, r, next, http.StatusFound) }