从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; }
我做错了什么?
答案 0 :(得分:0)
正如Brandon和Nick所说,gcloud auth login
与所有者的谷歌用户(所以不是服务帐户)一起做了。谢谢你的帮助。