缺少有关 Google 翻译 API 客户端问题的有效 API 密钥?
Missing a valid API key about Google Translation API Client issue?
我按照 https://cloud.google.com/translate/docs/reference/libraries#client-libraries-usage-java 开始 java 客户端演示。
我已经set
认证json文件到环境变量GOOGLE_APPLICATION_CREDENTIALS
。但是,当我 运行 java 示例代码时,我得到了 translateException。
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:61)
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:144)
at com.google.cloud.translate.TranslateImpl.call(TranslateImpl.java:113)
at com.google.cloud.translate.TranslateImpl.call(TranslateImpl.java:110)
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"
}
文档显示此 JSON 文件包含关键信息。
显示示例代码
// 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());
我不知道如何设置 api-key。
我给key
和credentials
设置环境变量后还是不行。
要向 Google Translation 发出经过身份验证的请求,您必须创建一个带有凭据的服务对象或使用 API 密钥。最简单的身份验证方法是使用 Application Default Credentials。这些凭证是从您的环境中自动推断出来的,因此您只需要以下代码来创建您的服务对象:
Translate translate = TranslateOptions.getDefaultInstance().getService();
我个人从来没有成功过。
此代码也可以与 API 键一起使用。默认情况下,在 GOOGLE_API_KEY
环境变量中查找 API 键。设置 API 键后,您可以通过调用通过 TranslateOptions.getDefaultInstance().getService()
.
创建的翻译服务上的方法来进行 API 调用
示例项目here
我能够通过 运行 将 google 翻译成工作
"gcloud auth application-default login"
在命令提示符下。在要求您使用 google 帐户授权后,这会将凭据重新生成到默认位置。有关详细信息,请参阅 https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-translate。
您可以尝试通过您的服务帐户 json 文件进行身份验证,如下所示
在节点中非常简单
// Instantiates a client
const translate = new Translate(
{
projectId: 'your project id', //eg my-project-0o0o0o0o'
keyFilename: 'path of your service acount json file' //eg my-project-0fwewexyz.json
}
);
你可以参考https://cloud.google.com/bigquery/docs/authentication/service-account-file java
添加
System.setProperty("GOOGLE_API_KEY", "your key here");
之前
Translate translate = TranslateOptions.getDefaultInstance().getService();
干杯:)
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Requests from this Android client application <empty> are blocked.",
"reason" : "forbidden"
} ],
"message" : "Requests from this Android client application <empty> are blocked.",
"status" : "PERMISSION_DENIED"
}
我遵循 android 中的以下方法来解决它。我尝试使用私钥,但对我不起作用。所以我为此使用 public 键
System.setProperty("GOOGLE_API_KEY", "Public 键");
val translate = TranslateOptions.getDefaultInstance().service
translate?.let {
val translation = it.translate("Hola Mundo!",
Translate.TranslateOption.sourceLanguage("es"),
Translate.TranslateOption.targetLanguage("en"),
Translate.TranslateOption.model("nmt"));
val check = translation.translatedText
Log.e("inf",""+check)
}
我按照 https://cloud.google.com/translate/docs/reference/libraries#client-libraries-usage-java 开始 java 客户端演示。
我已经set
认证json文件到环境变量GOOGLE_APPLICATION_CREDENTIALS
。但是,当我 运行 java 示例代码时,我得到了 translateException。
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:61)
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:144)
at com.google.cloud.translate.TranslateImpl.call(TranslateImpl.java:113)
at com.google.cloud.translate.TranslateImpl.call(TranslateImpl.java:110)
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"
}
文档显示此 JSON 文件包含关键信息。
显示示例代码
// 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());
我不知道如何设置 api-key。
我给key
和credentials
设置环境变量后还是不行。
要向 Google Translation 发出经过身份验证的请求,您必须创建一个带有凭据的服务对象或使用 API 密钥。最简单的身份验证方法是使用 Application Default Credentials。这些凭证是从您的环境中自动推断出来的,因此您只需要以下代码来创建您的服务对象:
Translate translate = TranslateOptions.getDefaultInstance().getService();
我个人从来没有成功过。
此代码也可以与 API 键一起使用。默认情况下,在 GOOGLE_API_KEY
环境变量中查找 API 键。设置 API 键后,您可以通过调用通过 TranslateOptions.getDefaultInstance().getService()
.
示例项目here
我能够通过 运行 将 google 翻译成工作 "gcloud auth application-default login" 在命令提示符下。在要求您使用 google 帐户授权后,这会将凭据重新生成到默认位置。有关详细信息,请参阅 https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-translate。
您可以尝试通过您的服务帐户 json 文件进行身份验证,如下所示
在节点中非常简单
// Instantiates a client
const translate = new Translate(
{
projectId: 'your project id', //eg my-project-0o0o0o0o'
keyFilename: 'path of your service acount json file' //eg my-project-0fwewexyz.json
}
);
你可以参考https://cloud.google.com/bigquery/docs/authentication/service-account-file java
添加
System.setProperty("GOOGLE_API_KEY", "your key here");
之前
Translate translate = TranslateOptions.getDefaultInstance().getService();
干杯:)
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Requests from this Android client application <empty> are blocked.",
"reason" : "forbidden"
} ],
"message" : "Requests from this Android client application <empty> are blocked.",
"status" : "PERMISSION_DENIED"
}
我遵循 android 中的以下方法来解决它。我尝试使用私钥,但对我不起作用。所以我为此使用 public 键
System.setProperty("GOOGLE_API_KEY", "Public 键"); val translate = TranslateOptions.getDefaultInstance().service
translate?.let {
val translation = it.translate("Hola Mundo!",
Translate.TranslateOption.sourceLanguage("es"),
Translate.TranslateOption.targetLanguage("en"),
Translate.TranslateOption.model("nmt"));
val check = translation.translatedText
Log.e("inf",""+check)
}