Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Google app engine app engine项目访问google云存储的默认凭据?_Google App Engine_Google Cloud Storage - Fatal编程技术网

Google app engine app engine项目访问google云存储的默认凭据?

Google app engine app engine项目访问google云存储的默认凭据?,google-app-engine,google-cloud-storage,Google App Engine,Google Cloud Storage,我有一个应用程序引擎项目,我想访问我的谷歌云存储默认存储桶。获取凭证对象的第一步失败,在活动实例上执行以下操作: Credential creds = GoogleCredential.getApplicationDefault(); 我得到的异常消息是: 应用程序默认凭据不可用。如果在Google Compute Engine中运行,则这些凭据可用。否则,必须定义指向定义凭据的文件的环境变量Google_Application_Credentials。有关详细信息,请参阅 此处的文档指出,生

我有一个应用程序引擎项目,我想访问我的谷歌云存储默认存储桶。获取凭证对象的第一步失败,在活动实例上执行以下操作:

Credential creds = GoogleCredential.getApplicationDefault();
我得到的异常消息是:

应用程序默认凭据不可用。如果在Google Compute Engine中运行,则这些凭据可用。否则,必须定义指向定义凭据的文件的环境变量Google_Application_Credentials。有关详细信息,请参阅

此处的文档指出,生产应用程序引擎项目应该可以访问默认凭据:

3.如果您正在运行Google App Engine产品,则将使用与应用程序关联的内置服务帐户

我有没有遗漏一些设置

我的应用程序引擎版本(gradle):

和谷歌云存储库版本:

com.google.apis:google-api-services-storage:v1-rev35-1.20.0

谢谢

转到Google开发者控制台->凭证并创建一个默认服务帐户.json密钥。当您这样做时,它将为您下载一个文件,如
default account credentials.json
。然后必须将该文件放在应用程序引擎项目中的某个位置。调用时将引用此文件

Credential creds=GoogleCredential.getApplicationDefault()

但是,在此之前,必须将环境变量设置为该文件位置。为此,请打开
appengine web.xml
文件,并将这一行放入其中:

<env-variables>
            <env-var name="GOOGLE_APPLICATION_CREDENTIALS"
                value="WEB-INF/default-account-credentials.json" />
        </env-variables>

其中
value
是您刚刚下载的
.json
creds文件的路径


现在它可以工作了。(你的gradle导入很好)

我已经按照上面的步骤添加了下载文件的环境变量。但我仍然在java.security.AccessControlContext.checkPermission(AccessControlContext.java:484)中得到异常:嵌套在java.lang.ExceptionInInitializerRor:java.security.AccessControlException:access拒绝(“java.lang.RuntimePermission”“modifyThreadGroup”)中。请建议是否需要执行任何其他步骤。提前感谢您的帮助。如何在app engine中放置文件?文档称应用程序引擎将自动使用默认服务帐户。我不认为在应用程序中存储creds是正确的,根据文档,这些creds必须可以从应用程序引擎中访问(正如作者所建议的),我知道很久没有问过这个问题了,但您可以尝试将此参数导出到包含私钥数据的JSON文件,以设置默认google云帐户,
export google\u APPLICATION\u CREDENTIALS=/Users/googleCredentials.JSON
<env-variables>
            <env-var name="GOOGLE_APPLICATION_CREDENTIALS"
                value="WEB-INF/default-account-credentials.json" />
        </env-variables>