我有一些在AppEngine中运行的相当简单的Go代码,应该使用OAuth2从用户帐户中获取文件列表。它似乎初始化了服务OK,但是当它试图获取文件列表时,我得到了以下错误:OAuthError: RoundTrip: no提供了
package foo
import (
"appengine"
"appengine/urlfetch"
"code.google.com/p/goauth2/oauth"
"code.google.com/p/google-api-go-client/drive/v2"
"fmt"
"net/http"
)
var config = &oauth.Config{
ClientId: "(redacted).apps.googleusercontent.com",
ClientSecret: "REDACTED",
Scope: "https://www.googleapis.com/auth/drive",
AuthURL: "https://accounts.google.com/o/oauth2/auth",
TokenURL: "https://accounts.google.com/o/oauth2/token",
}
func init() {
http.HandleFunc("/", home)
}
func home(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
transport := &oauth.Transport{
Config: config,
Transport: &urlfetch.Transport{Context: c}}
svc, err := drive.New(transport.Client())
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
q := svc.Files.List()
_, err = q.Do()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
fmt.Fprintf(w, "Success!")
}我不知道我在这里做错了什么。如能提供任何帮助,将不胜感激。
发布于 2013-04-22 16:50:04
令牌配置是不够的;您首先必须通过以下步骤获得一个有效的访问令牌:
code的查询参数。code参数并将其传递给交换。如果一切顺利,现在应该对请求进行正确的身份验证。发布于 2013-05-11 02:38:59
这个页面有点旧,但是它很好地勾勒出了Go代码的步骤。http://golangtutorials.blogspot.com/2011/11/oauth2-3-legged-authorization-in-go-web.html
https://stackoverflow.com/questions/16146117
复制相似问题