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>