1

ユーザーのアカウントからファイルのリストを取得するために OAuth2 を使用する必要がある、かなり単純な Go コードを AppEngine で実行しています。サービスを正常に初期化するようですが、ファイル リストをフェッチしようとすると、次のエラーが発生します: OAuthError: RoundTrip: トークンが提供されていません

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!")
}

ここで何が間違っているのかわかりません。どんな助けでも親切にいただければ幸いです。

4

2 に答える 2

3

このページは少し古いですが、Go コードを使用して手順の概要を説明しています。 http://golangtutorials.blogspot.com/2011/11/oauth2-3-legged-authorization-in-go-web.html

于 2013-05-11T02:38:59.967 に答える