Google Cloud Translate-403禁止缺少API金钥 [英] Google Cloud Translate - 403 Forbidden Missing API key
问题描述
我已经使用了Google Cloud Transalte API,并决定将Java平台用于我的应用程序
I have gone thru the Google cloud transalte API and decided to use Java platform for my application
根据文档,使用必需的jar测试了以下代码.这段代码在我的日食中正常工作
Based on the documents, tested the below code with required jar's. this code working fine in my eclipse
Translate translate = TranslateOptions.getDefaultInstance().getService();
String name = rs.getString("name");
Translation translation1 = translate.translate(name);
String TransalateName = translation1.getTranslatedText();
但是,当将此代码导出到jar中并在Shell脚本/Unix服务器中运行时,出现以下错误消息,权限已定义-请求缺少有效的API密钥. 我在Java代码中如何以及在哪里使用API密钥,我有一个授权的服务帐户.
However when export this code into a jar and running in Shell script/Unix server I'm getting the below error says, permission deined - The request is missing a valid API key. How and where can i use the API key in the java code, i have a authorized service account.
我已尝试使用我的服务帐户使用Google Transalte,但它运行正常,下面是示例.但是我不确定如何在JAVA代码中使用此键
I have tried Google transalte with my service account it's working fine, below is the example. However I'm not sure how to use this key in JAVA code
CURL命令-运行正常
CURL command - working fine
curl -X POST \
-H "Authorization: Bearer "AUTH_TOKEN_HERE \
-H "Content-Type: application/json; charset=utf-8" \
--data "{
'q': '你好',
'target': 'en',
'model': 'nmt',
}" "https://translation.googleapis.com/language/translate/v2"
错误:
com.google.cloud.translate.TranslateException: The request is missing a valid API key.
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:61)
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:144)
at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:113)
at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:110)
at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:89)
at com.google.cloud.RetryHelper.run(RetryHelper.java:74)
at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:51)
at com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:110)
at com.google.cloud.translate.TranslateImpl.translate(TranslateImpl.java:124)
at orderFullfilment.EventDriver.main(EventDriver.java:138)
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"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:130)
... 8 more
推荐答案
您缺少对GoogleAPI.setKey的调用.
You're missing a call to GoogleAPI.setKey.
import com.google.api.GoogleAPI;
import com.google.api.translate.Language;
import com.google.api.translate.Translate;
GoogleAPI.setKey(API_KEY);
GoogleAPI.setHttpReferrer("https://...");
// normally you would catch errors
Translate.DEFAULT.execute(sourceText, Language.fromString(sourceLanguageCode),
Language.fromString(targetLanguageCode));
例如参见 https://www .programcreek.com/java-api-examples/?api = com.google.api.GoogleAPI .我必须说,令人失望的是,谷歌云文档中没有任何示例(我可以找到).
See for example https://www.programcreek.com/java-api-examples/?api=com.google.api.GoogleAPI. I must say it's disappointing how there is no example (that I could find) in the google cloud docs.
这篇关于Google Cloud Translate-403禁止缺少API金钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!