Android Google Translate API权限被拒绝

时间:2018-04-11 18:39:38

标签: android google-api google-translate

我一直试图让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密钥?是否缺少代码?

感谢您的支持。

1 个答案:

答案 0 :(得分:0)

您是否在最后使用密钥发布到此地址?

此处

https://translation.googleapis.com/language/translate/v2/?key=&gt; http编码的API密钥&lt;

如果是这样,您使用的是实际的API密钥吗?

如果没有,当您在应用控制台中查看“Google云端平台”时,请点击左侧的小键,将您带到“凭据”页面。

然后,如果您没有看到“API密钥”,则单击“创建凭据”蓝色按钮,然后选择“API密钥”

然后将此作为您在上面提到的URL地址中的密钥发布到。