程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Google 翻译 API V3:如何从文件流验证服务帐户大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Google 翻译 API V3:如何从文件流验证服务帐户?

开发过程中遇到Google 翻译 API V3:如何从文件流验证服务帐户的问题如何解决?下面主要结合日常开发的经验,给出你关于Google 翻译 API V3:如何从文件流验证服务帐户的解决方法建议,希望对你解决Google 翻译 API V3:如何从文件流验证服务帐户有所启发或帮助;

验证服务帐户以使用 Google Translate V3 API 的默认方式是通过环境变量。这个名为 Google_APPliCATION_CREDENTIALS 的环境变量指向一个带有凭据的 Json 文件,如下所述: https://cloud.google.com/docs/authentication/production

但是,在不同位置使用文件时如何使用所需的凭据?我可以从 fileStream 创建凭据对象,如 Google 文档中所述。但是,使用此凭据对象仅针对 Google 云存储进行了说明。 TranslateTextrequest 的构建器不接受此类凭据对象。 https://googleapis.dev/dotnet/Google.Cloud.Translate.V3/2.0.0/api/Google.Cloud.Translate.V3.TranslateTextrequest.html

唯一的解决方法是将文件复制到 env var 中指定的位置,但这看起来很奇怪,并且在未设置该变量时会失败。

解决方法

所以,我终于能够解决这个问题了。

@JohnHanley 不幸的是,TranslationserviceClientBuilder 类在我的环境中不可用。也许它是 DotNet 特定的。不过,这个提示还是很有帮助的,因为我找到了另一个 Builder,它创建了一个 TranslationserviceSetTings 的实例,而它又具有一个静态工厂方法,而该方法又可以用来实例化一个 TranslationserviceClient

以下是如何从文件路径到 Google JSON 凭据文件创建 TranslationserviceClient 的完整解决方案。

TranslationserviceSetTings setTings = TranslationserviceSetTings.newBuilder()
    .setCredentialsProvider(new CredentialsProvider() {
    @Override
    public Credentials getCredentials() throws IOException {
        GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(credentialsFileAbsPath))
        .createScoped(Collections.singletonList("https://www.googleapis.com/auth/cloud-platform"));

        return credentials;
        }
    }).build();

TranslationserviceClient translationserviceClient = TranslationserviceClient.create(setTings);

当然,匿名类也可以用 Lambda 表达式替换。

@Pjotr​​S 抱歉造成混乱。我所指的文件是 JSON 凭证文件,而不是要翻译的文件。

大佬总结

以上是大佬教程为你收集整理的Google 翻译 API V3:如何从文件流验证服务帐户全部内容,希望文章能够帮你解决Google 翻译 API V3:如何从文件流验证服务帐户所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。