我已经设置了一个简单的测试应用程序来与谷歌的Natural Language API交互。I created a service account,并下载了JSON凭证。我在本地开发机器上运行,因此我将GOOGLE_APPLICATION_CREDENTIALS
环境变量设置为指向JSON文件。需要明确的是,这是可行的:应用程序成功地进行了一些API调用并显示了结果。
我想删除对环境变量的依赖。如何使用JSON文件在应用程序中的已知位置(或任何其他方法)来创建具有这些凭据的LanguageServiceClient
?
发布于 2017-01-08 05:10:30
您可以像这样注册:
DatastoreOptions options = DatastoreOptions.newBuilder()
.setProjectId(PROJECT_ID)
.setAuthCredentials(AuthCredentials.createForJson(
new FileInputStream(PATH_TO_JSON_KEY))).build();
这有帮助吗?
发布于 2018-07-05 19:55:13
您始终可以将完整的json文件作为字符串进行传递,如下所示:
CredentialsProvider credentialsProvider;
String credentials = "[YOUR JSON FILE CONTENT]";
try {
credentialsProvider
= FixedCredentialsProvider.create(
ServiceAccountCredentials.fromStream(new ByteArrayInputStream(credentials.getBytes())));
} catch (IOException ex) {
Logger.getLogger(GoogleNLPService.class.getName()).log(Level.SEVERE, null, ex);
}
LanguageServiceSettings.Builder languageServiceSettingsBuilder
= LanguageServiceSettings.newBuilder();
LanguageServiceSettings languageServiceSettings = languageServiceSettingsBuilder.setCredentialsProvider(credentialsProvider).build();
List<NamedEntity> entities = new ArrayList<>();
try (LanguageServiceClient language = LanguageServiceClient.create(languageServiceSettings)) {
...
}
或者,您可以将json文件放在resources文件夹中,然后按如下方式读取它:
credentialsProvider
= FixedCredentialsProvider.create(
ServiceAccountCredentials.fromStream(new FileInputStream("./src/main/resources/FILENAME.json")));
然而,当我在Heroku中上传我的应用程序时,这个相对路径不起作用。因此,我决定使用字符串解决方案。
发布于 2017-01-13 08:48:25
我们使用服务帐户+ GoogleCredential.Builder
-- (请注意,本例使用的是p12格式的凭证文件);示例如下:
private GoogleCredential authorize() throws IOException, GeneralSecurityException
{
return new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(serviceAccount)
.setServiceAccountScopes(SCOPES)
.setServiceAccountUser(serviceAccountUser)
// variable p12File is a String w/ path to the .p12 file name
.setServiceAccountPrivateKeyFromP12File(new java.io.File(p12File))
.build();
}
https://stackoverflow.com/questions/41482714
复制相似问题