Google Cloud Translate-403禁止缺少API金钥 [英] Google Cloud Translate - 403 Forbidden Missing API key

查看:115
本文介绍了Google Cloud Translate-403禁止缺少API金钥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆