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