3 回答
TA贡献1943条经验 获得超7个赞
做这个:
func getCloudContext(appengineContext context.Context) context.Context {
hc := &http.Client{
Transport: &oauth2.Transport{
Source: google.AppEngineTokenSource(appengineContext, storage.ScopeFullControl),
Base: &urlfetch.Transport{Context: appengineContext},
},
}
return cloud.NewContext(appengine.AppID(appengineContext), hc)
}
或者,如果通过开发服务器传递凭据不起作用,您也可以使用显式凭据:
func getCloudContext(aeCtx context.Context) (context.Context, error) {
data, err := ioutil.ReadFile("/path/to/credentials.json")
if err != nil {
return nil, err
}
conf, err := google.JWTConfigFromJSON(
data,
storage.ScopeFullControl,
)
if err != nil {
return nil, err
}
tokenSource := conf.TokenSource(aeCtx)
hc := &http.Client{
Transport: &oauth2.Transport{
Source: tokenSource,
Base: &urlfetch.Transport{Context: aeCtx},
},
}
return cloud.NewContext(appengine.AppID(aeCtx), hc), nil
}
- 3 回答
- 0 关注
- 159 浏览
添加回答
举报