google-app-engine – 使用Go Runtime Google App Engine时出现Google云端存储客户端应用错误

我尝试从this link的示例代码并尝试进行操作
谷歌云存储使用谷歌云存储客户端应用程序来自Go运行时,但示例代码中的以下部分给出错误“不能使用c(类型”appengine“.Context)作为类型context.Context in function argument:”appengine“. Context不实现context.Context(缺少截止日期方法)“

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},
}

转载注明原文:google-app-engine – 使用Go Runtime Google App Engine时出现Google云端存储客户端应用错误 - 代码日志