【问题标题】:How credential and google cloud storage work?凭证和谷歌云存储如何工作?
【发布时间】:2013-06-03 22:21:27
【问题描述】:

我刚刚开始开发 GAE Web 应用程序。我正在尝试获取谷歌云存储桶的列表。我从网站上找到了一些代码。

我在网上找到了 3 种方法。

  1. 使用 Google 存储 API

    https://code.google.com/p/google-api-java-client/source/browse/storage-serviceaccount-appengine-sample/src/main/java/com/google/api/client/sample/storage/appengine/serviceaccount/StorageSample.java?repo=samples&r=f0c6982b3cde8629511346641bfe4bb5eb28d73f

  2. 使用 Json 库

    但此示例需要为存储桶配置域验证。

  3. 使用python

    我们现有的应用程序是由 gae 为 Java 开发的。我不认为这个 python 方式可以包含在 Java 应用程序中。

然后我想修复 No1 方式。

它显示凭据错误。存储桶目前已授权给所有人(All Authenticated Users)。我想我需要了解凭证的工作原理。我已经阅读了关于 0Auth2 的谷歌开发者页面。我可以找到 bigquery 的示例。如果您有关于凭证和谷歌云存储的示例或好的网站,这将非常有帮助。

错误;

Error: com.google.api.client.googleapis.extensions.appengine.auth.oauth2.AppIdentityCredential.(Ljava/util/Collection;)V

我在 API 控制台做了什么:

  • 创建客户端 ID(Web 应用程序、服务帐户、已安装的应用程序)

  • 创建简单 API 访问(新服务器密钥、新浏览器密钥)

我在本地机器上做了什么;

  • 使用 gsutil 设置 ACL

我的开发环境

  • eclipse 3.6 helios(日文包)

  • 用于 Eclipse 的 gae java

  • gae 1.8.0

  • java 1.6.31

  • 谷歌存储 API

  • 谷歌客户端库

  • 其他(tomcat,maven)

  • windows 7 英语和日语语言包

【问题讨论】:

  • 你能发布完整的错误回溯吗?

标签: google-app-engine oauth-2.0 credentials google-cloud-storage


【解决方案1】:

您的第一次尝试(第 1 次)是专注于让它发挥作用的最佳方式。 Marc 提供的代码示例使用内置的 App Engine App Identity 模块向其他 Google API 安全地识别 App Engine 应用:https://developers.google.com/appengine/docs/java/appidentity/#Asserting_Identity_to_Google_APIs

但是,有 2 个问题需要检查:

  1. App Identity 模块无法使用本地开发服务器工作。在本地运行时,本地服务器无法安全地将自己标识为 Google 生产 API - 因此您应该考虑使用具有可下载密钥的服务帐户进行本地测试,或者使用最简单的选项(以及我推荐的now),是部署到生产 App Engine 环境中进行测试。

  2. 确保将 App Engine 服务帐户电子邮件地址添加到您尝试访问的 Google Cloud Storage 存储桶的访问控制列表中。通过查看管理控制台(对于您的 App Engine 应用程序)-> 应用程序设置来获取此电子邮件地址:

服务帐户名称: xxxxxxx@appspot.gserviceaccount.com

要将其添加到 Google Cloud Storage 访问控制列表,请将其添加到拥有 Google Cloud Storage 存储分区的项目的项目团队中,或者,如果您未使用默认访问控制设置,请直接添加到 ACL: https://developers.google.com/storage/docs/accesscontrol

具有可下载密钥的服务帐户 - 如果您无法在生产 App Engine 环境中进行测试,请使用它进行本地测试: https://developers.google.com/accounts/docs/OAuth2ServiceAccount

【讨论】:

  • 按照说明,它起作用了。但我无法从 Web 控制台添加服务帐户名称:xxxxxxx@appspot.gserviceaccount.com。我的 api 控制台受限于我的域帐户。我使用 gsutil 添加它。谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多