我一直试图让Google Translate API正常运行。我已阅读并重新阅读了一些帖子以及Google Cloud身份验证指南(http://cloud.google.com/docs/authentication/getting-started#auth-cloud-implicit-java),但仍然必须遗漏一些内容。 根据指南并在http://stackoverflow.com/questions/49379897/missing-a-valid-api-key-about-google-translation-api-client-issue之后,我创建了一个名为ABCD的服务帐户,并使自己成为GCP控制台中的项目所有者。我下载了JSON文件并将其放在一个名为JSON的文件夹中。然后我手动创建了一个系统环境变量 - GOOGLE_APPLICATION_CREDENTIALS,其值为C:\ Users \ aaa \ AndroidStudioProjects \ JSON。
当我看到IAM&在GCP控制台中的管理页面,它显示我的服务帐户,ID为ABCD@helpful-monitorxxxxxxxxx.com以及密钥ID。
这是我的MainActivity类以及进行翻译的Aync任务类。
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context context = getApplicationContext();
Trans translate = new Trans();
String text = ("Hello world");
String res = translate.execute(text).toString();
}
}
import android.os.AsyncTask;
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 Transl extends AsyncTask<String, Void, String> {
protected String doInBackground(String... params) {
String text = "Hello friend"; //text to translate
Translate translate = TranslateOptions.getDefaultInstance().getService();
Translation translation =
translate.translate(
text,
Translate.TranslateOption.sourceLanguage("en"),
Translate.TranslateOption.targetLanguage("fr"));
return translation.getTranslatedText();Fatal Exception
}
protected void onPostExecute(String result) {
System.out.printf("Translation: %s%n", result);
}
}
当我运行它时,我得到一个致命的RunTime异常 -
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"
}
我无法找到任何调试方法。我是否需要进一步启用帐户/ API密钥?是否缺少代码?
感谢您的支持。
答案 0 :(得分:0)
您是否在最后使用密钥发布到此地址?
此处https://translation.googleapis.com/language/translate/v2/?key=&gt; http编码的API密钥&lt;
如果是这样,您使用的是实际的API密钥吗?
如果没有,当您在应用控制台中查看“Google云端平台”时,请点击左侧的小键,将您带到“凭据”页面。
然后,如果您没有看到“API密钥”,则单击“创建凭据”蓝色按钮,然后选择“API密钥”
然后将此作为您在上面提到的URL地址中的密钥发布到。