在Java源代码中使用Google API

时间:2016-11-03 04:33:20

标签: java windows google-api

我在Eclipse中创建一个使用Google API(自然语言处理)的Java项目,但我收到错误:

  

应用程序默认凭据不可用。如果在Google App Engine,Google Compute Engine或Google Cloud Shell上运行,则可以使用它们。否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS,指向定义凭证的文件。

在我的系统设置下,我进入系统并创建了一个环境变量(用户和系统),其名称为:GOOGLE_APPLICATION_CREDENTIALS,以及一个指向我的服务帐户JSON Key的值,就像它在文档中所说的那样。我看到其他问题中的一些人也说使用像export GOOGLE_APPLICATION_CREDENTIALS="path/to/json/file"这样的命令,但是当我在Windows Bash中这样做时它没有做任何事情。

我没有在我的JAVA代码中添加变量或路径,因为我不知道我会怎么做,而且我在任何Google文档中都找不到答案。下面是尝试使用默认应用程序凭据的代码:

有些地方说使用Google App Engine并使用默认凭据,但我宁愿不将项目上传到Google App Engine并使用我已经拥有的JSON凭证文件,看起来会更容易。

/**
   * Connects to the Natural Language API using Application Default Credentials.
   */
  public static CloudNaturalLanguageAPI getLanguageService() 
    throws IOException, GeneralSecurityException {
    GoogleCredential credential =
        GoogleCredential.getApplicationDefault().createScoped(CloudNaturalLanguageAPIScopes.all());
    JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
    return new CloudNaturalLanguageAPI.Builder(
        GoogleNetHttpTransport.newTrustedTransport(),
        jsonFactory, new HttpRequestInitializer() {
              @Override
              public void initialize(HttpRequest request) throws IOException {
                credential.initialize(request);
              }
            })
        .setApplicationName(APPLICATION_NAME)
        .build();
  }

1 个答案:

答案 0 :(得分:0)

事实证明,在使用Eclipse时,设置GOOGLE_APPLICATION_CREDENTIALS环境变量必须在Eclipse本身内完成,而不是在Windows系统设置中完成。我所要做的就是进入Eclipse,单击Run下拉列表,选择Run Configurations,打开Environment选项卡,然后在那里设置该环境变量。然后我得到一个错误,说我必须启用结算,并且只是在我的Google云端平台设置中执行此操作。之后一切都很完美!