func unmarshallToken(s sessions.Session) (t *token) { if s.Get(keyToken) == nil { return } data := s.Get(keyToken).([]byte) var tk token json.Unmarshal(data, &tk) return &tk }
func callbackhandle(f *Config, c martini.Context, s sessions.Session, w http.ResponseWriter, r *http.Request) { rurl, _ := s.Get("_RedirectURL").(string) rurl = extractPath(rurl) if len(r.URL.Query().Get("code")) > 0 { //获取token tk, error := f.authTokenURL(r.URL.Query().Get("code")) if error == nil && tk.Valid() { val, _ := json.Marshal(tk) s.Set(keyToken, val) fmt.Println("登陆成功") s.AddFlash("登陆成功") c.Invoke(oAuthUserLoginCallback) if len(rurl) == 0 { rurl = "/" } fmt.Println("rul:", rurl) http.Redirect(w, r, rurl, 302) return } else { s.AddFlash("登陆失败") http.Redirect(w, r, PathError, 302) return } } if len(r.URL.Query().Get("client_id")) > 0 { f.ClientID = r.URL.Query().Get("client_id") f.ClientSecret = r.URL.Query().Get("client_secret") http.Redirect(w, r, f.authCodeURL(), 302) return } // fmt.Println("call:",r) // if (len(r.URL.Query().Get("code"))>0) { // fmt.Println("callFUN:q token") // rurl,_:= s.Get("_RedirectURL").(string) // //获取token // tk, error := f.authTokenURL(r.URL.Query().Get("code")) // if error==nil && tk.Valid() { // val, _ := json.Marshal(tk) // s.Set(keyToken, val) // s.AddFlash("success","登陆成功") // c.Invoke(oAuthUserLogin) // // // http.RedirectHandler(rurl, 302) // return // }else{ // s.AddFlash("warning","登陆失败") // http.Redirect(w, r, PathError, 302) // return // } // }else{ // fmt.Println("callFUN:1111") // //获取code // if len(r.URL.Query().Get("client_id"))>0 { // fmt.Println("callFUN:q code") // f.ClientID = r.URL.Query().Get("client_id") // f.ClientSecret = r.URL.Query().Get("client_secret") // http.Redirect(w, r, f.authCodeURL(), 302) // return // } // http.Redirect(w, r, "/", 302) // } // fmt.Println("callFUN:sppp") }