为 Java 谷歌翻译设置 API_Key

Posted

技术标签:

【中文标题】为 Java 谷歌翻译设置 API_Key【英文标题】:Setting API_Key for Java Google Translate 【发布时间】:2019-08-31 06:20:01 【问题描述】:

我正在尝试了解 Google Translation API 如何与 Java 配合使用,但我无法弄清楚如何输入 API 密钥以进行授权。 API Key 说明说使用 key=API_KEY 参数传递它,但我不确定它是在哪里输入的。这是添加到主类还是进入另一个子类的某个地方?

我使用在 Windows 10 上运行的 Eclipse 作为我的平台。我的基本配置来自https://cloud.google.com/translate/docs/quickstart-client-libraries#client-libraries-install-java。按照这些步骤,我在 Google 注册并创建了 API-Key,将 .JSON 文件下载到我的笔记本电脑,并安装了 Google Cloud Tools for Eclipse,并按照这些说明在此 URL https://cloud.google.com/eclipse/docs/libraries?utm_source=github&utm_medium=google-cloud-java&utm_campaign=ToolsforEclipse 上进行配置。

我用来测试的代码是在https://cloud.google.com/translate/docs/quickstart-client-libraries#client-libraries-install-java 的快速入门中找到的示例 Java 代码。

// Imports the Google Cloud client library
import com.google.cloud.translate.Translate;
import com.google.cloud.translate.Translate.TranslateOption;
import com.google.cloud.translate.TranslateOptions;
import com.google.cloud.translate.Translation;

public class QuickstartSample 
  public static void main(String... args) throws Exception 
  // Instantiates a client
  Translate translate = TranslateOptions.getDefaultInstance().getService();

  // The text to translate
  String text = "Hello, world!";

  // Translates some text into Russian
  Translation translation =
    translate.translate(
        text,
        TranslateOption.sourceLanguage("en"),
        TranslateOption.targetLanguage("ru"));


System.out.printf("Text: %s%n", text);
System.out.printf("Translation: %s%n", translation.getTranslatedText());
  

我尝试修改我的 Windows 环境变量以指向 PATH 变量 GOOGLE_APPLICATION_CREDENTIALS=c:_project\translation.json 但这似乎没有任何区别。

这是当我尝试运行程序时 Eclipse 返回的错误消息,

Aug. 25, 2019 10:08:29 P.M.  
com.google.auth.oauth2.ComputeEngineCredentials runningOnComputeEngine 
INFO: Failed to detect whether we are running on Google Compute Engine. 
Exception in thread "main" com.google.cloud.translate.TranslateException: The request is missing a valid API key.   
     at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:62)  
     at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:156)     
     at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:124)     
     at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:121)     
     at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:105)  
     at com.google.cloud.RetryHelper.run(RetryHelper.java:76)   
     at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:50)    
     at com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:120)  
     at com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:138)  
     at com.example.translate.QuickstartSample.main(QuickstartSample.java:35) 
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 
   
"code" : 403,   
"errors" : [ 
"domain" : "global",
"message" : "The request is missing a valid API key.",
"reason" : "forbidden"   
 ],   
"message" : "The request is missing a valid API key.",   
"status" : "PERMISSION_DENIED"     

【问题讨论】:

您在本地运行或部署时是否遇到此错误?如果是后者,您使用的是什么 GCP 产品?我对错误有点迷失,因为它说missing a valid API key。您是否按照here 的描述创建了服务帐户?无论如何,您可能想熟悉以下文档:googleapis.dev/java/google-cloud-clients/latest/com/google/… 特别是“TranslateOption”类,它提供了明确定义您自己的凭据密钥的机制。 您是否按照以下步骤操作:help.memsource.com/hc/en-us/articles/… @Santos 我遵循了与您提供的链接中列出的步骤类似的步骤,并且没有遇到任何问题。我能够注册帐户并生成 API 密钥。我的问题是我不确定我必须在程序或 Google Cloud Platform 库中的哪个位置输入它。 @KF 我在本地运行这个程序,在 Windows 10 上使用 Eclipse。服务帐户已经创建,我可以生成 API 密钥。我已经查看了 TranslateOption 类,但我不确定是否可以输入 APIKey 作为强声明的一部分,或者它是否应该是主 Quickstart 类的一部分? 【参考方案1】:

阅读文档,这是为谷歌云翻译添加 api_key 的方法。我对它进行了测试,它可以双向工作。

"请注意,此代码也可以与 API 密钥一起使用。默认情况下,会在 GOOGLE_API_KEY 环境变量中查找 API 密钥。一旦设置了 API 密钥,您就可以制作 API通过调用 TranslateOptions.getDefaultInstance().getService() 创建的翻译服务上的方法来调用。

您还可以如下显式设置 API 密钥:"

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

https://cloud.google.com/docs/authentication/production

https://github.com/googleapis/java-translate

【讨论】:

知道为什么不推荐使用 setApiKey 方法吗?

以上是关于为 Java 谷歌翻译设置 API_Key的主要内容,如果未能解决你的问题,请参考以下文章

怎么把谷歌翻译设置在桌面上呢?

谷歌翻译设置默认语言

谷歌翻译在线翻译

谷歌在线翻译

excel实现谷歌自动翻译

java使用谷歌翻译