首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的Google API身份验证,无需使用环境变量

Java中的Google API身份验证,无需使用环境变量
EN

Stack Overflow用户
提问于 2017-01-05 18:34:38
回答 5查看 4.4K关注 0票数 21

我已经设置了一个简单的测试应用程序来与谷歌的Natural Language API交互。I created a service account,并下载了JSON凭证。我在本地开发机器上运行,因此我将GOOGLE_APPLICATION_CREDENTIALS环境变量设置为指向JSON文件。需要明确的是,这是可行的:应用程序成功地进行了一些API调用并显示了结果。

我想删除对环境变量的依赖。如何使用JSON文件在应用程序中的已知位置(或任何其他方法)来创建具有这些凭据的LanguageServiceClient

EN

回答 5

Stack Overflow用户

发布于 2017-01-08 05:10:30

您可以像这样注册:

代码语言:javascript
复制
DatastoreOptions options = DatastoreOptions.newBuilder()
  .setProjectId(PROJECT_ID)
  .setAuthCredentials(AuthCredentials.createForJson(
    new FileInputStream(PATH_TO_JSON_KEY))).build();

这有帮助吗?

票数 3
EN

Stack Overflow用户

发布于 2018-07-05 19:55:13

您始终可以将完整的json文件作为字符串进行传递,如下所示:

代码语言:javascript
复制
        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文件夹中,然后按如下方式读取它:

代码语言:javascript
复制
    credentialsProvider
            = FixedCredentialsProvider.create(
                    ServiceAccountCredentials.fromStream(new FileInputStream("./src/main/resources/FILENAME.json")));

然而,当我在Heroku中上传我的应用程序时,这个相对路径不起作用。因此,我决定使用字符串解决方案。

票数 3
EN

Stack Overflow用户

发布于 2017-01-13 08:48:25

我们使用服务帐户+ GoogleCredential.Builder -- (请注意,本例使用的是p12格式的凭证文件);示例如下:

代码语言:javascript
复制
 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();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41482714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档