我正在Eclipse中创建一个使用Google API(自然语言处理)的Java项目,但是我得到了错误:
应用程序默认凭证不可用。如果在Google应用引擎、Google计算引擎或Google Cloud Shell上运行,它们是可用的。否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS,该变量指向定义凭据的文件。
在我的系统设置下,我已经进入system并创建了一个环境变量(用户和系统),其名称为:GOOGLE_APPLICATION_CREDENTIALS和一个指向我的服务帐户JSON Key的值,就像文档中所说的那样。我看到有些人在其他问题中也说要使用像:export GOOGLE_APPLICATION_CREDENTIALS="path/to/json/file"
这样的命令,但是当我在Windows Bash中这样做时,它没有做任何事情。
我没有在我的JAVA代码中添加变量或路径,因为我不知道如何做到这一点,我无法在任何谷歌文档中找到答案。下面是尝试使用默认应用程序凭据的代码:
有些地方说使用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();
}
事实证明,在使用Eclipse时,必须在Eclipse本身中设置GOOGLE_APPLICATION_CREDENTIALS环境变量,而不是在Windows系统设置中。我所要做的就是进入Eclipse,单击Run下拉列表,选择Run Configurations,打开Environment选项卡,并在那里设置环境变量。然后我得到了一个错误,说我必须启用计费,我只是在我的谷歌云平台设置中这样做了。从那以后一切都很顺利!