com.google.cloud.translate.TranslateException: в запросе отсутствует действительный ключ API - PullRequest
0 голосов
/ 27 мая 2018

Я новичок в разработке Android.Я разработал приложение через Android Studio, используя firebase в качестве бэкэнда, и запускал все через эмулятор.Когда я пытаюсь создать приложение с помощью G translate API.Я включил каждую аутентификацию в консоли GCP.ошибка:

java.lang.RuntimeException: Unable to start activity ComponentInfo{testing.com.login/testing.com.login.MainActivity}: com.google.cloud.translate.TranslateException: The request is missing a valid API key.
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 Caused by: 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 testing.com.login.MainActivity.onCreate(MainActivity.java:60)
    at android.app.Activity.performCreate(Activity.java:7009)
    at android.app.Activity.performCreate(Activity.java:7000)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6494) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
 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.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)
        ... 21 more

Я добавил переменные среды (GOOGLE_API_KEY, GOOGLE_APPLICATION_CREDENTIALS) на моем компьютере под управлением Windows.Однако, когда я отлаживаю код с помощью функции System.getProperties (), он возвращает значения, такие как SYSTEMSERVERCLASSPATH, ANDROID_STORAGE, PATH, ANDROID_SOCKET_zygote и т. Д. Вместо переменных моего компьютера.Откуда эти переменные?

1 Ответ

0 голосов
/ 17 июля 2018

Переменные окружения, такие как SYSTEMSERVERCLASSPATH и ANDROID_STORAGE - это переменные окружения, установленные во время инициализации системой Android, например

, с init.environment.rc.in файл инициализации.Если вы настроили учетную запись службы Google Cloud Platform (GCP) с необходимыми вам разрешениями, вам нужно будет включить и файл учетных данных, и экспортировать переменную GOOGLE_APPLICATION_CREDENTIALS , указывающую на этот файл согласно этому документу наhttps://cloud.google.com/docs/authentication/getting-started#setting_the_environment_variable, в этом файле инициализации для Android.

Обратите внимание, что и файл учетных данных, и путь к этому файлу учетных данных будут включены и доступны из системы Android.

...