gcloud:云存储(java)附录中的默认应用程序凭据

时间:2016-06-22 12:09:44

标签: java maven google-app-engine google-cloud-storage

从appengine网络应用中访问Google云端存储时,我的身份验证有问题。我想使用Application Default Credentials。也许有人可以建议我。

我有一个项目,服务帐户:" x@appspot.gserviceaccount.com"。

在IAM部分,该项目只有成员,y @ gmail.com(这是我的电子邮件地址),角色所有者。

在项目中,我有两个云存储桶,staging.x.appspot.com和x.appspot.com。我还没有编辑他们的权限。

在项目中,我有一个用Java编写的appengine web应用程序。从代码中,我想像这样访问云存储:

    import com.google.cloud.AuthCredentials;
    import com.google.cloud.storage.Storage;

    AuthCredentials credentials=AuthCredentials.createApplicationDefaults();
    Storage storage=StorageOptions.builder().authCredentials(credentials).build().service();

使用maven依赖

    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-1.0-sdk</artifactId>
        <version>1.9.38</version>
    </dependency>

    <dependency>
        <groupId>com.google.auth</groupId>
        <artifactId>google-auth-library-appengine</artifactId>
        <version>0.4.0</version>
    </dependency>

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>gcloud-java</artifactId>
        <version>0.2.3</version>
    </dependency>

我用

启动开发服务器
mvn clean appengine:devserver

并使用

进行部署
mvn clean appengine:update

我原以为这就足够了。

但是在一台计算机上的devserver中它可以工作,在另一台计算机上我得到了异常&#34; 401无效的身份验证&#34;或类似的东西。我不知道计算机之间的区别是什么。

在部署的应用程序中,我得到异常403 Forbidden。

引起:com.google.api.client.googleapis.json.GoogleJsonResponseException:403 {   &#34;代码&#34; :403,   &#34;错误&#34; :[{     &#34;结构域&#34; :&#34;全球&#34;,     &#34;消息&#34; :&#34;禁止&#34;,     &#34;理由&#34; :&#34;禁止&#34;   }],   &#34;消息&#34; :&#34;禁止&#34; }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如Brandon和Nick所说,gcloud auth login与所有者的谷歌用户(所以不是服务帐户)一起做了。谢谢你的帮助。