我正在尝试使用java中的Google Vision库。这些步骤指定我需要设置我的身份验证凭据才能开始使用此库。我能够从 API 控制台凭据页面生成我的 json 属性文件,并将其放置在资源文件夹中的 Spring 启动应用程序中。
我认为更新了我的应用程序属性文件以包含如下值:
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.
我能够使用 Spring Cloud GCP 配置此属性 spring-cloud-gcp-starter-data-datastore,创建一个服务帐户项目所有者,将 JSON 私钥复制到主资源目录,并在应用程序中设置以下属性。
spring.cloud.gcp.project-id=<project-id>
spring.cloud.gcp.credentials.location=classpath:<credentials-private-key>.json
从文档中
您可以通过访问此页面找到项目 ID https://support.google.com/googleapi/answer/7014113?hl=en转到 API 控制台。
从项目列表中,选择"管理所有项目"。将显示您所属的所有项目的名称和 ID。您还可以选择项目转到设置并查看项目 ID
您可以使用应用程序属性,但需要使用不同的存储选项生成器。
您可能正在使用
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();
请注意,如果您要将应用程序部署到云,则默认构建器(使用环境变量)更好,因为这样会自动为您填充。
您需要设置 shell 变量。在 mvn 运行之前运行此命令。
export GOOGLE_APPLICATION_CREDENTIALS="/Users/ronnyshibley/Dev/eddress-service-key.json"
若要使用服务帐户密钥进行身份验证,可以在 shell 中设置环境变量。
export GOOGLE_APPLICATION_CREDENTIALS="/Users/username/directory/service-key-file-name.json"
然后,您需要从同一会话启动 IDE。导出和设置环境变量后,我卡住了,仍然无法使用它。
我尝试退出当前 IDE 窗口,然后从同一会话再次重新启动 IDE。就我而言,它是Intellij,因此在终端本身中,
cd project directory
idea .
或者,您也可以在 bash 配置文件中添加环境变量,然后获取它。
我已经尝试了几种方法来做到这一点,但没有一种奏效。马文插件环境变量是最后一件没有任何问题的事情。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<executable>true</executable>
<environmentVariables>
<GOOGLE_APPLICATION_CREDENTIALS>/path/to/the/service-account.json</GOOGLE_APPLICATION_CREDENTIALS>
</environmentVariables>
</configuration>
</plugin>
</plugins>
</build>
你需要添加 env 变量
GOOGLE_APPLICATION_CREDENTIALS=<path to google project json file >
如果您使用的是 IntelliJ 想法,请编辑项目配置并添加环境变量
对于图像,请检查此
https://www.twilio.com/blog/set-up-env-variables-intellij-idea-java
您可以像这样加载 JSON 密钥文件:
// Load the JSON key and create a TranslationServiceClient:
public TranslationServiceClient getTranslationClient() throws IOException {
InputStream credentialsStream = getClass().getResourceAsStream("/key.json");
Credentials credentials = GoogleCredentials.fromStream(credentialsStream);
TranslationServiceSettings settings = TranslationServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credentials))
.build();
return TranslationServiceClient.create(settings);
}
这是用法:
// Replace [YOUR_PROJECT_ID] with your Google Cloud Project ID
public void translateText() {
try (TranslationServiceClient client = getTranslationClient()) {
LocationName parent = LocationName.of("[YOUR_PROJECT_ID]", "global");
TranslateTextRequest request = TranslateTextRequest.newBuilder()
.setParent(parent.toString())
.setMimeType("text/plain")
.setSourceLanguageCode("en-US")
.setTargetLanguageCode("es")
.addContents("Hello, World!")
.build();
TranslateTextResponse response = client.translateText(request);
String translatedText = response.getTranslationsList().get(0).getTranslatedText();
System.out.println(translatedText);
} catch (Exception e) {
e.printStackTrace();
}
}
请记住要谨慎使用 key.json 文件。确保它不公开访问,因为滥用可能会导致您的 Google Cloud 帐户产生意外费用。