首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Go中为应用程序引擎上的OAuth2使用客户端ID?

如何在Go中为应用程序引擎上的OAuth2使用客户端ID?
EN

Stack Overflow用户
提问于 2013-04-22 11:30:44
回答 2查看 966关注 0票数 1

我有一些在AppEngine中运行的相当简单的Go代码,应该使用OAuth2从用户帐户中获取文件列表。它似乎初始化了服务OK,但是当它试图获取文件列表时,我得到了以下错误:OAuthError: RoundTrip: no提供了

代码语言:javascript
复制
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!")
}

我不知道我在这里做错了什么。如能提供任何帮助,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-22 16:50:04

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

  1. 将用户重定向到AuthCodeURL返回的页面。将向用户显示应用程序的名称和请求的权限。
  2. 如果用户授予权限,它们将被重定向到您在配置中给出的RedirectURL。URL将包含一个名为code的查询参数。
  3. 检索code参数并将其传递给交换。如果一切顺利,现在应该对请求进行正确的身份验证。
票数 1
EN

Stack Overflow用户

发布于 2013-05-11 02:38:59

这个页面有点旧,但是它很好地勾勒出了Go代码的步骤。http://golangtutorials.blogspot.com/2011/11/oauth2-3-legged-authorization-in-go-web.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16146117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档