Exemplo n.º 1
0
Arquivo: auth.go Projeto: ww24/gops
// Auth of Twitter
func Auth(c web.C, w http.ResponseWriter, r *http.Request) {
	defer libs.InternalServerError(w)

	consumer := newConsumer()
	token, authURL, err := consumer.GetRequestTokenAndUrl(libs.Config["twitter"].(libs.Hash)["callbackURL"].(string))
	if err != nil {
		panic(err)
	}

	tokenJSON, err := json.Marshal(token)
	if err != nil {
		panic(err)
	}

	fmt.Println(string(tokenJSON))

	cookie := &http.Cookie{
		Name:     "token",
		Value:    url.QueryEscape(string(tokenJSON)),
		Expires:  time.Now().AddDate(0, 0, 7),
		HttpOnly: true,
	}
	http.SetCookie(w, cookie)
	http.Redirect(w, r, authURL, 302)
}
Exemplo n.º 2
0
Arquivo: auth.go Projeto: ww24/gops
// Callback of Twitter Authenticate
func Callback(c web.C, w http.ResponseWriter, r *http.Request) {
	defer libs.InternalServerError(w)

	consumer := newConsumer()

	tokenCookie, err := r.Cookie("token")
	if err != nil {
		panic(err)
	}

	tokenJSON, err := url.QueryUnescape(tokenCookie.Value)
	if err != nil {
		panic(err)
	}

	token := new(oauth.RequestToken)
	err = json.Unmarshal([]byte(tokenJSON), token)
	if err != nil {
		panic(err)
	}

	code := r.URL.Query()
	oauthVerifier, key1 := code["oauth_verifier"]
	_, key2 := code["oauth_token"]
	if key1 == false || key2 == false {
		http.Error(w, "Bad Request", 400)
		return
	}

	accessToken, err := consumer.AuthorizeToken(token, oauthVerifier[0])
	if err != nil {
		panic(err)
	}

	pretty.Println(accessToken)
	fmt.Println(accessToken.AdditionalData["screen_name"])

	http.Redirect(w, r, "/", 302)
}