首页 文章

应用引擎项目访问谷歌 Cloud 存储的默认凭据?

提问于
浏览
11

我有一个应用引擎项目,我想访问我的谷歌 Cloud 存储默认存储桶 . 获取Credential对象的第一步失败,在实时实例上执行以下操作:

Credential creds = GoogleCredential.getApplicationDefault();

我收到的异常消息:

“应用程序默认凭据不可用 . 如果在Google Compute Engine中运行,则可以使用它们 . 否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS,指向定义凭据的文件 . 有关详细信息,请参阅https://developers.google.com/accounts/docs/application-default-credentials . ”

这里的文档说 生产环境 应用程序引擎项目应该可以访问默认凭据吗?:

https://developers.google.com/identity/protocols/application-default-credentials

“3.如果您在Google App Engine 生产环境 中运行,将使用与该应用程序关联的内置服务帐户 . ”

我缺少一些设置吗?

我的app引擎版本(gradle):

com.google.appengine:appengine-java-sdk:1.9.18

和谷歌 Cloud 存储库版本:

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

谢谢

1 回答

  • 6

    转到Google Developers Console - >凭据并创建默认服务帐户.json密钥 . 当你这样做时,它将为你下载像 default-account-credentials.json 这样的文件 . 然后,您必须将该文件放在app引擎项目中的某个位置 . 您致电时将引用此文件

    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进口很好)

相关问题