如何在spring boot app

时间:2017-10-24 23:28:08

标签: java spring google-api google-oauth2

我正在尝试在java中使用google vision库。这些步骤指定我需要设置我的身份验证凭据才能开始使用this库。我能够从API Console Credentials页面生成我的json属性文件,然后将它放在资源文件夹中的spring boot应用程序中。

我认为更新了我的application.properties文件以包含如下值:

GOOGLE_APPLICATION_CREDENTIALS=datg-avatar-generator-9dc9155cd5bd.json

我也在我的控制器中设置我的属性源:

@PropertySource("${GOOGLE_APPLICATION_CREDENTIALS}")

然而,在这样做之后,我仍然收到错误说:

java.io.IOException: The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.

4 个答案:

答案 0 :(得分:5)

我能够使用Spring Cloud GCP配置该属性spring-cloud-gcp-starter-data-datastore,创建服务帐户项目所有者,将json私钥复制到主资源目录,并在application.properties

spring.cloud.gcp.project-id=<project-id>
spring.cloud.gcp.credentials.location=classpath:<credentials-private-key>.json

来自documentation

答案 1 :(得分:0)

您需要设置shell变量。在mvn运行之前运行此命令。

export GOOGLE_APPLICATION_CREDENTIALS="/Users/ronnyshibley/Dev/eddress-service-key.json"

答案 2 :(得分:0)

您可以使用应用程序属性,但需要使用不同的 StorageOptions 构建器。

您可能正在使用

private static Storage storage = StorageOptions.getDefaultInstance().getService(); 

但是如果你想跳过环境变量你需要使用:

Credentials credentials = GoogleCredentials
  .fromStream(new FileInputStream("path/to/file"));
Storage storage = StorageOptions.newBuilder().setCredentials(credentials)
  .setProjectId("my-project-id").build().getService();

请注意,如果您要将应用程序部署到云,则默认构建器(使用环境变量)会更好,因为这样会自动为您填充。

答案 3 :(得分:0)

要使用服务帐户密钥进行身份验证,您可以在 shell 中设置环境变量。

export GOOGLE_APPLICATION_CREDENTIALS="/Users/username/directory/service-key-file-name.json"

然后您需要从同一个会话中启动您的 IDE。导出设置好环境变量后卡住了,还是不能用。

我尝试退出当前 IDE 窗口并从同一会话中再次重新启动 IDE。 就我而言,它是 Intellij,所以在终端本身中,

cd project directory
idea .

或者你也可以在你的 bash 配置文件中添加环境变量,然后源它。