Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gcloud:appengine中云存储(java)的默认应用程序凭据_Java_Maven_Google App Engine_Google Cloud Storage - Fatal编程技术网

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

gcloud:appengine中云存储(java)的默认应用程序凭据,java,maven,google-app-engine,google-cloud-storage,Java,Maven,Google App Engine,Google Cloud Storage,从appengine web应用程序中访问Google云存储时,我在身份验证方面遇到困难。我想使用应用程序默认凭据。也许有人能给我建议 我有一个项目,具有服务帐户:“x@appspot.gserviceaccount.com“ 在IAM节中,项目只有一名成员,y@gmail.com(这是我的电子邮件地址),角色所有者 在这个项目中,我有两个云存储桶,staging.x.appspot.com和x.appspot.com。我没有编辑他们的权限 在这个项目中,我有一个用Java编写的appengin

从appengine web应用程序中访问Google云存储时,我在身份验证方面遇到困难。我想使用应用程序默认凭据。也许有人能给我建议

我有一个项目,具有服务帐户:“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:update
我认为这就足够了

但在一台计算机上的devserver中,它工作,在另一台计算机上,我得到异常“401无效身份验证”或类似的东西。我不知道计算机之间有什么区别

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

原因:com.google.api.client.googleapis.json.GoogleJsonResponseException:403 { “代码”:403, “错误”:[{ “域”:“全局”, “消息”:“禁止”, “原因”:“禁止” } ], “消息”:“禁止” }


我做错了什么?

正如Brandon和Nick所说,
gcloud auth login
与谷歌用户(而不是服务帐户)进行了欺骗。谢谢你的帮助。

正如布兰登和尼克所说,
gcloud auth login
与作为所有者的谷歌用户(而不是服务帐户)一起完成了这项任务。感谢您的帮助。

Per,应用程序默认凭据在应用程序引擎本身上运行时应该可以正常工作,但如果您使用“gcloud preview App run”启动Appengine,则默认情况下只能在本地工作。或者,在运行示例之前,尝试运行
gcloud auth login
。^^^重复此操作。您需要运行
gcloud-auth-login
gcloud-auth-activate-service-account
()才能在dev中使用默认凭据。此线程上有任何更新吗?嗯,我转到了bucket配置,并明确添加了用户权限“x@appspot.gserviceaccount.com“具有访问权限”Writer“。因此,我的应用程序可以正常工作,但我不会结束这个问题,因为我认为这应该是自动的,所以可能我还是做错了。根据,应用程序默认凭据在应用程序引擎本身上运行时应该可以正常工作,但如果您使用“gcloud preview App run”启动Appengine,则默认情况下只能在本地工作。或者,在运行示例之前,尝试运行
gcloud auth login
。^^^重复此操作。您需要运行
gcloud-auth-login
gcloud-auth-activate-service-account
()才能在dev中使用默认凭据。此线程上有任何更新吗?嗯,我转到了bucket配置,并明确添加了用户权限“x@appspot.gserviceaccount.com“具有访问权限”Writer“。这样我的应用程序就可以工作了,但我不会结束这个问题,因为我认为这应该是自动的,所以也许我还是做错了什么。
mvn clean appengine:update