【问题标题】:Create a Google App Engine Project Programatically in Go在 Go 中以编程方式创建 Google App Engine 项目
【发布时间】:2016-09-21 06:52:03
【问题描述】:

我正在尝试寻找一种方法来使用 Go 跟随 this example 在 Google App Engine 上动态创建项目。 但是,文档在如何继续对用户进行身份验证方面不是很清楚(至少对我而言),Go 示例甚至说:

// TODO: Fill required fields.

我还查看了Go Client Library Documentation,这让我更加困惑。

之前是否有人使用过此 API,或者已经找到了在 App Engine 中以编程方式创建项目的方法?

【问题讨论】:

  • 是身份验证问题还是填写必填字段的问题?如果是第二个,那应该或多或少独立于客户端库,只需遵循其余 API 调用文档中指定的格式即可。在客户端库上尝试之前,我建议在 APIs Explorer 上尝试请求:developers.google.com/apis-explorer/#p/cloudresourcemanager/…
  • 我之前通过 API Explorer 测试过,它工作正常。我只是不知道如何在我的应用程序上实现此身份验证。这是我不明白的一点。

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


【解决方案1】:

当您通过调用 cloudresourcemanager.New(hc) 来初始化 API 时,您传递了一个 http 客户端,在本示例中,该客户端使用来自系统的默认凭据进行身份验证。这些凭据来自 App Engine 或 Compute Engine 的默认服务帐户(但不确定第二个),具体取决于您所处的环境。如果您不在 Google Cloud 中,则可以按照示例中的说明进行操作:

// 2. This sample uses Application Default Credentials for authentication.
//    If not already done, install the gcloud CLI from
//    https://cloud.google.com/sdk/ and run
//    'gcloud beta auth application-default login'

如果您这样做,默认凭据将从您使用命令 gcloud beta auth application-default login 登录的用户获取。另一种可能性是通过调用 JWTConfigFromJson1 更改代码以生成凭据,这将从 json 文件显式加载您的凭据。这里2可以看到如何使用该方法初始化一个http客户端的例子。

【讨论】:

  • 以上都不起作用。我之前设置了应用程序默认帐户,但仍然出现错误:错误上下文 googleapi:错误 403:调用者没有权限,被禁止。第二种方法不起作用,因为凭据是在项目级别设置的,因为项目正是我要创建的项目,所以我可以事先创建凭据
  • 我可以在 APIs Explorer 的 v1 API 上运行 create,但不能在 v1beta1 上运行。 create 方法在新版本上标记为 alpha。也许它还没有普遍可用?
  • 是的。我现在专注于 V1 api。我与云平台支持团队取得了联系,v1 实际上是推荐的方法。现在的问题是由于某些身份验证问题,我无法让 v1 在 API Explorer 之外工作。我已经为此问题发布了一个新问题。 stackoverflow.com/questions/39800765/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 2015-01-28
  • 2017-09-09
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多