如何在 Spring 启动应用程序中设置GOOGLE_APPLICATION_CREDENTIALS



我正在尝试使用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 帐户产生意外费用。

相关内容

  • 没有找到相关文章

最新更新