Ho sbattuto la testa per due giorni e mi manca chiaramente qualcosa. Sono un po 'doofus sullo sviluppo backend/server e spero che qualcuno possa indicarmi la giusta direzione.Oauth2 in Go con Martini - Sintassi ResponseWriter per Reddit
- Ho un'applicazione desktop (non Go) che effettua una richiesta OAuth2 da Reddit.
- OAuth2 nella mia applicazione funziona correttamente, tuttavia il flusso non riesce quando Reddit colpisce l'URI di reindirizzamento sul mio server.
- Immagino che stia aspettando il giusto risultato di ResponseWriter e che nessuno dei miei tentativi incompetenti abbia funzionato.
- L'URI di reindirizzamento colpisce il mio server e la funzione di callback (sotto) non fa nulla.
Domande
- Dove sto andando male?
- È variabile "t" il mio codice di autenticazione e ho fatto (aka, sei un buffone!)?
- Posso solo scrivere il valore di t per la mia app non Go ed essere fatto?
- O mi manca un passaggio?
- Nota: codice leggermente semplificato.
Grazie!
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?
}
Punto di riferimento
- Reddit API
- Reddit esempio specifico PHP
- Reddit esempio specifico di Python
- Martini
- Go OAuth2
Varie
- Perché Martini? Sembra dannatamente fantastico.
- Perché non solo Oauth2? Perché io sono ignorante.
- Perché non PHP/Python? Perché, dai! Sto cercando di imparare Go. (Sto amando e ottenendo ottimi risultati che migliorano il mio lavoro di interfaccia utente.)
't.Exchange (codice) 'restituisce il token di autenticazione e un errore - controlla il loro valore. – thwd
Vedi anche qui per un esempio più completo: https://code.google.com/p/goauth2/source/browse/oauth/example/oauthreq.go – elithrar
Grazie per i lead. Darei un'occhiata e farei un altro crack. – Geoffrey