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