凭证和谷歌云存储如何工作?

时间:2013-06-07 14:50:05

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

我刚刚开始开发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 liblary

    但是这个示例需要为bucket配置域验证。

  3. 使用python

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

  4. 然后我想修复No1方式。

    显示凭据错误。现在,桶被授权给所有人(所有经过身份验证的用户)。我想我需要了解凭证的工作原理。我已经阅读了关于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(日语语言包)

    • gae java for eclipse

    • gae 1.8.0

    • java 1.6.31

    • google storage API

    • google客户端库

    • 他人(Tomcat中,行家)

    • windows 7英语日语语言包

1 个答案:

答案 0 :(得分:1)

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

然而,有两个问题需要检查:

  1. App Identity模块无法使用本地devserver。在本地运行时,本地服务器无法安全地将自己标识为Google生产API - 因此您应该查看使用带有可下载密钥的服务帐户进行本地测试,或者最简单的选项(以及我建议的用途)现在),是部署到生产App Engine环境进行测试。

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

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

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

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