google-app-engine - 使用 Go Runtime Google App Engine 的 Google Cloud Storage Client App 错误

标签 google-app-engine go google-cloud-storage google-cloud-platform

我正在尝试来自 this link 的示例代码并尝试对其进行操作 Google Cloud Storage 使用来自 Go 运行时的 Google Cloud Storage 客户端应用程序,但示例代码中的以下部分给出了错误“无法使用 c(类型“appengine”。上下文)作为类型上下文。函数中的上下文参数: “appengine”。Context 没有实现 context.Context(缺少 Deadline 方法)“

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 Cloud Storage Client App 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29010718/

相关文章:

java - 本地开发服务器上的谷歌云存储 : Invalid Filename

没有事务的 Java Google Appengine 分片计数器

python - 如何使PySoundfile在Google Cloud Platform灵活环境上运行?

java - MemcacheService 本质上是单例吗

java - 在 GAE 下使用 HtmlUnit/HttpUnit

go - 删除转换更改语义

go - 为什么 IntelliJ Idea 找不到 GO SDK 的位置?

hadoop - 为什么不将数据留在HDFS中,

go - golang中的字符串到数字的转换

python - 403 禁止 - cloud_storage_bucket get_media