>我正在尝试此链接中的示例代码并尝试对Google Cloud Storage 使用 Google Cloud Storage Client App 来自 Go 运行时,但示例代码中的以下部分给出了错误"无法使用 c(键入 "appengine"。上下文)作为类型上下文。函数参数中的上下文:"appengine"。上下文不实现上下文。上下文(缺少截止日期方法)"
c := appengine.NewContext(r)
hc := &http.Client{
Transport: &oauth2.Transport{
Source: google.AppEngineTokenSource(c, storage.ScopeFullControl),
Base: &urlfetch.Transport{Context: c},
},
}
这里有什么问题??我该如何解决这个问题?
错误消息明确指出您尝试传递类型为 appengine.Context
的值,其中预期类型为 context.Context
。
google.AppEngineTokenSource()
函数需要 context.Context
类型的值,而不是您传递的值(类型 appengine.Context
)。
您可以使用以下函数创建这样的Context
:
cloud.NewContext(projID string, c *http.Client)
这就是我会这样做的:
c := appengine.NewContext(r)
hc := &http.Client{}
ctx := cloud.NewContext(appengine.AppID(c), hc)
hc.Transport = &oauth2.Transport{
Source: google.AppEngineTokenSource(ctx, storage.ScopeFullControl),
Base: &urlfetch.Transport{Context: c},
}
从appengine
更新到google.golang.org/appengine
,如下所述:https://github.com/golang/oauth2/#app-engine