我正在尝试在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.
答案 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
答案 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 配置文件中添加环境变量,然后源它。