Oauth2与Reddit的Martini-ResponseWriter语法配合使用

Oauth2与Reddit的Martini-ResponseWriter语法配合使用,oauth,go,Oauth,Go,两天来,我一直在为此事绞尽脑汁,很明显,我错过了一些东西。我对后端/服务器开发有点糊涂,希望有人能给我指出正确的方向 我有一个桌面应用程序(not Go),它从Reddit发出OAuth2请求 我的应用程序中的OAuth2工作正常,但是当Reddit命中我自己服务器上的重定向URI时,流失败 我猜它正在等待合适的应答器结果,而我十几次失败的尝试都没有成功 重定向URI点击我的服务器和回调函数(如下),然后什么也不做 问题 我哪里做错了 变量“t”是我的身份验证代码吗?我完成了吗(也就是说,

两天来,我一直在为此事绞尽脑汁,很明显,我错过了一些东西。我对后端/服务器开发有点糊涂,希望有人能给我指出正确的方向

  • 我有一个桌面应用程序(not Go),它从Reddit发出OAuth2请求
  • 我的应用程序中的OAuth2工作正常,但是当Reddit命中我自己服务器上的重定向URI时,流失败
  • 我猜它正在等待合适的应答器结果,而我十几次失败的尝试都没有成功
  • 重定向URI点击我的服务器和回调函数(如下),然后什么也不做
问题

  • 我哪里做错了
  • 变量“t”是我的身份验证代码吗?我完成了吗(也就是说,你是个小丑!)
  • 我可以将t的值写入我的非Go应用程序并完成吗
  • 还是我错过了一步
  • 注意:代码稍微简化了
谢谢

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?
}
参考点

  • RedditAPI
  • 特定于Reddit的PHP示例
  • 特定于Reddit的Python示例
  • 马提尼
  • 走吧
杂项

  • 为什么是马提尼?看起来棒极了
  • 为什么不只是Oauth2呢?因为我无知
  • 为什么不是PHP/Python?因为,来吧!我正在努力学习围棋。(我很喜欢它,并且得到了一些很好的结果,这增强了我的UI工作。)

好的,答案主要在我的客户机应用程序中——同样,不是Go——它在OAuth2请求中缺少一些方面。(对于不同的请求,要获得正确的头也需要一些努力。)

我找到的Reddit的OAuth2进程的最佳信息如下:

Reddit的回复仍然让我询问ClientID和ClientSecret,我确信可以通过合适的ResponseWriter提供,尽管目前我只是简单地复制/粘贴到弹出窗口中,以便我可以专注于其他内容

当我得到这个平方,我会增加这个答案

如果有人对更多信息感兴趣,请随时询问


再次感谢,汤姆王尔德和艾利特拉

检查martini contrib页面以查看
t.Exchange(code)
返回身份验证令牌和错误-检查其值。另请参阅此处以获取更完整的示例:感谢您的线索。我会看一看,然后再尝试一下。我可能已经发现了问题。如果是的话,我会发布一篇后续文章。这并不是我期望的答案,但是我得到了结果。另一天的斗争揭示了这个问题:错误处理程序不断覆盖成功处理程序的结果。