【问题标题】:Is there a way to set in code API Key for Google Cloud Translation?有没有办法在代码中为谷歌云翻译设置 API 密钥?
【发布时间】:2021-10-31 20:32:24
【问题描述】:

我正在尝试使用 Google Cloud Translation API。 我已经生成了 API 密钥,但我没有存储我的凭据的 .json 文件。 有没有办法将我的 API 密钥放入代码中,以便我可以使用翻译方法? 我只找到了需要 .json 文件的方法,但我没有。 我发现了一个不推荐使用的方法:

Translate translate = TranslateOptions.newBuilder().setApiKey(API_KEY).build().getService();

但它显示错误:

W/TranslateOptions: Ignoring Application Default Credentials {0}: using explicit setting for API key instead.
W/System.err: java.io.IOException: The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
W/System.err:     at com.google.auth.oauth2.DefaultCredentialsProvider.getDefaultCredentials(DefaultCredentialsProvider.java:134)

任何帮助将不胜感激!

编辑: 当我把环境变量 GOOGLE API KEY 并写道:

 Translate translate = TranslateOptions.getDefaultInstance().getService();
    Translation translation = translate.translate("¡Hola Mundo!");

我在 translate.translate() 行上遇到错误,它像 GET 方法一样发送请求,而不是像 POST,这就是为什么它说它缺少有效的 API 密钥,因为它根本没有发送 API 密钥。

com.google.cloud.translate.TranslateException: The request is missing a valid API key.

【问题讨论】:

  • @SusanMustafa 问题对我没有帮助。对不起
  • 打印您的环境变量 GOOGLE_API_KEY 并查看那里是否有值以及是否正确。如果存在,则表示您的 API KEY 不正确...
  • 怎么做? @SusanMustafa 我的 API 密钥是正确的,因为在 Postman 中我的请求被接受并且文本被翻译。

标签: java android google-cloud-platform cloud google-translation-api


【解决方案1】:

创建环境变量:GOOGLE_API_KEY

环境变量将您的 API 密钥作为值。

然后执行以下代码:

  import com.google.cloud.translate.Translate;
  import com.google.cloud.translate.TranslateOptions;

  Translate translate = TranslateOptions.getDefaultInstance().getService();

-- 已编辑

这个怎么样:

 HttpTransportOptions transportOptions = TranslateOptions.getDefaultHttpTransportOptions();
  transportOptions =
      transportOptions.toBuilder().setConnectTimeout(60000).setReadTimeout(60000).build();


  TranslateOptions translateOptions =
      TranslateOptions.newBuilder()
          .setApiKey(apiKey)
          .setTransportOptions(transportOptions)
          .build();


   Translate translate = translateOptions.getService();

【讨论】:

  • 但我读过:服务帐户由 IAM 管理,它们代表非人类用户。它们适用于您的应用程序需要自行访问资源或执行操作的场景,例如运行 App Engine 应用程序或与 Compute Engine 实例交互。那不是我需要的。用户帐户作为 Google 帐户进行管理,它们代表开发人员、管理员或与 Google Cloud 交互的任何其他人。它们适用于您的应用程序需要代表人类用户访问资源的场景。我已经创建了用户帐户...
  • @newstudent 您使用的是基础版还是高级版云翻译? IAM 角色 - 您可以使用身份和访问管理来保护您的翻译请求。创建服务账户并通过添加 IAM 角色授予他们权限。 Cloud Translation - Advanced 不支持 API 密钥。
  • 我只使用基本的 CloudTranslation。我想翻译消息,仅此而已。我已经创建了帐户并拥有 API KEY。当我在 Postman 中发送 POST 请求(translation.googleapis.com/language/translate/v2)时,它可以工作。但我不想在代码中使用 HttpRequests,我希望它更容易并使用 API 方法。
猜你喜欢
  • 1970-01-01
  • 2021-08-24
  • 2021-11-18
  • 2020-12-04
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
相关资源
最近更新 更多