2

我最近开始在 App Engine 上使用 golang 探索 Google Identity Kit。我正在使用googlesamples/identity-toolkit-go中的示例。在查看代码时,我发现了以下一些 appengine 包:

"google.golang.org/appengine"
"google.golang.org/appengine/datastore"

对于我正在开发的 GAE Golang 应用程序,我使用 GAE SDK 来运行使用goapp run. 但是,在我的代码中,我只引用

"appengine"
"appengine/datastore"

因为这指向位于提取的 go appengine sdk 中的 golang src。

我是否需要改用google.golang.orgappengine 包?

在意识到身份工具包方法所期望的 appengine.Context 与我使用的不匹配后,我才发现这一点。我收到了这个错误

`cannot use c (type "appengine".Context) as type "golang.org/x/net/context".Context in argument to client.ValidateToken. "appengine".Context does not implement "golang.org/x/net/context".Context (missing Deadline method)`

尽管我使用appengine.NewContext(r)示例解释。

4

1 回答 1

2

google.golang.org/appengine如果可以的话,我建议使用这些软件包。他们更好地使用该语言,主要是因为您提到的原因 ( contextis a net/context),也因为库更新并且通常具有更多功能。特别是如果您打算使用其他 Google 服务(如 Google Cloud Storage),那么使用更新的库会更容易。

但它们也更好,因为 - 因为它们只是常规的、可导入的包 - 它们与标准的 go 工具集配合得更好:goimports用于自动格式化、gocode自动完成等。

然而,它们并不完全完整。有一些功能缺失或弃用。以我的经验,过去主要缺少的功能是aetest包,它已经被移植,所以现在几乎没有理由不切换。

于 2015-12-17T02:47:28.067 回答