Я бил головой в течение двух дней, и я явно что-то пропустил. Я немного полезен для создания бэкэнда/сервера и надеюсь, что кто-то может указать мне в правильном направлении.
- У меня есть настольное приложение (не Go), которое делает запрос OAuth2 от Reddit.
- OAuth2 в моем приложении работает отлично, но поток не работает, когда Reddit попадает в URI перенаправления на моем собственном сервере.
- Я предполагаю, что он ждет соответствующего результата ResponseWriter, и ни одна из моих десятков некомпетентных попыток не сработала.
- URI перенаправления удаляет мой сервер и функцию обратного вызова (ниже), а затем ничего не делает.
Вопросы
- Где я ошибаюсь?
- Является ли переменным "t" мой код аутентификации, и я сделал (ака, вы шутер!)?
- Могу ли я просто написать значение t для своего приложения, отличного от Google, и сделать это?
- Или мне не хватает шага?
- Примечание: код слегка упрощен.
Спасибо!
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?
}
Контрольные точки
- Reddit API
- Пример Reddit для PHP
- Пример Reddit для Python
- Martini
- Перейти OAuth2
Разное
- Почему Мартини? Это выглядит чертовски здорово.
- Почему бы не просто Oauth2? Потому что я не знаю.
- Почему не PHP/Python? Потому что, давай! Я пытаюсь изучить Go. (Я люблю его и получаю отличные результаты, которые улучшают работу моего пользовательского интерфейса.)