我最近开始在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.org
appengine软件包?
我只是在意识到身份套件方法所期望的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)
作为解释的例子。
答案 0 :(得分:2)
如果可以,我建议您使用google.golang.org/appengine
套餐。他们使用该语言更好玩,主要是因为你提到的原因(context
是net/context
),还因为这些库更新并且通常具有更多功能。特别是如果您计划使用其他Google服务(例如Google云端存储),您可以更轻松地使用新版库。
但它们也更好,因为 - 因为它们只是常规的可导入软件包 - 它们使用标准的go工具集更好:goimports
用于自动格式化,gocode
用于自动完成,等。
然而,它们并不完全完整。有一些功能missing or deprecated。根据我的经验,过去常见的主要缺失功能是aetest
包,其中包含been ported,因此现在几乎没有理由不切换。