为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中的 App Engine 上使用 OAuth2 的客户端 ID?

如何在 Go 中的 App Engine 上使用 OAuth2 的客户端 ID?

Go
函数式编程 2021-06-04 18:17:53
我在 AppEngine 中运行了一些相当简单的 Go 代码,它们应该使用 OAuth2 从用户帐户中获取文件列表。似乎可以正常初始化服务,但是当它尝试获取文件列表时,出现此错误: OAuthError: RoundTrip: no Token providedpackage fooimport (    "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!")}我无法弄清楚我在这里做错了什么。任何帮助将不胜感激。
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

令牌配置不够;您首先必须通过以下步骤获得有效的访问令牌:

  1. 将用户重定向到AuthCodeURL返回的页面。用户将看到您的应用程序名称和请求的权限。

  2. 如果用户授予权限,他们将被重定向到您在配置中提供的RedirectURL。该 URL 将包含一个名为 的查询参数code

  3. 检索code参数并将其传递给Exchange。如果一切顺利,现在应该正确验证请求。


查看完整回答
反对 回复 2021-06-07
  • 2 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信