Ich habe mir zwei Tage lang den Kopf dafür geschlagen und mir fehlt eindeutig etwas. Ich bin ein bisschen ein Doofus auf Backend/Server-Entwicklung und hoffe, dass jemand mich in die richtige Richtung zeigen kann.Oauth2 in Go mit Martini - ResponseWriter Syntax für Reddit
Fragen
- Wo falsch gehe ich?
- Ist Variable "t" meine Auth-Code und bin ich fertig (aka, du bist ein Hanswurst!)?
- Kann ich einfach meinen Wert in meine Non-Go-App schreiben und fertig sein?
- Oder fehlt mir ein Schritt?
- Hinweis: Code leicht vereinfacht.
Vielen Dank!
package main
import (
"code.google.com/p/goauth2/oauth"
"fmt"
"github.com/codegangsta/martini"
"io"
"net/http"
)
var config = &oauth.Config{
ClientId: CLIENT_ID,
ClientSecret: CLIENT_SECRET,
Scope: "identify",
AuthURL: "https://ssl.reddit.com/api/v1/authorize",
TokenURL: "https://ssl.reddit.com/api/v1/access_token",
RedirectURL: "http://localhost:3000/reddit_oauth",
}
func main() {
m := martini.Classic()
m.Get("/reddit_oauth", handleCallback)
m.Run()
}
func handleCallback(w http.ResponseWriter, r *http.Request) {
//Get the code from the response
code := r.FormValue("code")
// Exchange the received code for a token
t := &oauth.Transport{Config: config}
t.Exchange(code)
// Am I done?
}
Referenzpunkte
- Reddit API
- Reddit spezifischen PHP Beispiel
- Reddit spezifische Python Beispiel
- Martini
- Go OAuth2
Misc
- Warum Martini? Es sieht verdammt gut aus.
- Warum nicht nur Oauth2? Weil ich unwissend bin.
- Warum nicht PHP/Python? Weil, komm schon! Ich versuche Go zu lernen. (Ich liebe es und einige tolle Ergebnisse, die meine UI Arbeit verbessert.)
't.Exchange (Code) 'gibt das Authentifizierungs-Token und einen Fehler zurück. Überprüfen Sie deren Wert. – thwd
Siehe auch hier für ein vollständigeres Beispiel: https://code.google.com/p/goauth2/source/browse/oauth/example/oauthreq.go – elithrar
Danke für die Leads. Ich werde es mir ansehen und einen weiteren Riss machen. – Geoffrey