繁体   English   中英

Google Cloud Translate-403禁止缺少API金钥

[英]Google Cloud Translate - 403 Forbidden Missing API key

我通过Google Cloud Transalte API并决定对我的应用程序使用Java平台

根据文档,使用必需的jar测试了以下代码。 这段代码在我的日食中工作正常

        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​​密钥,我有一个授权的服务帐户。

我已经使用我的服务帐户尝试了Google transalte,它工作正常,下面是示例。 但是我不确定如何在JAVA代码中使用此密钥

CURL命令-运行正常

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的调用。

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 我必须说,令人失望的是,谷歌云文档中没有示例(我能找到)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM