我一直在尝试使用App引擎服务器实现OAuth2 for Go服务器请求。
这是代码(在示例后面):
oauthConf, err := google.NewServiceAccountJSONConfig(
"./key.json",
"https://www.googleapis.com/auth/adsense.readonly",
)
if err != nil {
log.Fatal(err)
}
client := http.Client{Transport: oauthConf.NewTransport()}
resp, err := client.Get(urlStr)
...
我收到错误消息:
http.DefaultTransport和http.DefaultClient在App Engine中不可用。
我非常确定json.key文件和其他内容一样有效
Google搜索引导我了解最好使用 urlfetch ,但我无法弄清楚如何使用oauth2配置进行设置。
答案 0 :(得分:0)
NewServiceAccountJSONConfig
返回oauth2.JWTConfig
https://github.com/golang/oauth2/blob/master/google/google.go#L69-L87
您正在使用的.NewTransport()
:
https://github.com/golang/oauth2/blob/master/jwt.go#L86-L88
默认为http.DefaultTransport
,即appengine不支持:
https://github.com/golang/oauth2/blob/master/jwt.go#L163-L168
我会改为使用AppEnigneConfig
(如果可能的话)。见http://godoc.org/github.com/golang/oauth2/google
c := appengine.NewContext(nil)
config := google.NewAppEngineConfig(c, "https://www.googleapis.com/auth/bigquery")
// The following client will be authorized by the App Engine
// app's service account for the provided scopes.
client := http.Client{Transport: config.NewTransport()}
client.Get("...")
否则,如果您需要使用ServiceAccountJSONConfig
,则可能可以,但您需要使用urlfetch
Client
和Transport
。看看如何设置AppEngineConfig
:https://github.com/golang/oauth2/blob/master/google/appengine.go