В разрешении Google Cloud Auto ML Vision отказано

У меня странная ситуация с Google Cloud Platform Auto ML Vision API. Когда я делаю запрос к API, он всегда выдает ошибку с надписью РАЗРЕШЕНИЕ ОТКАЗАНО, см. Пример ответа об ошибке ниже:

{
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}

Вот что я сделал до сих пор:

  1. Создана учетная запись службы и загружен файл json, содержащий ключи учетной записи службы.
  2. Включены AutoML Editor и AutoML Admin для моей учетной записи службы.
  3. Интегрировал api прогнозируемого отдыха и сгенерировал токен-носитель, используя приведенный ниже код:

     var credentials: GoogleCredentials = GoogleCredentials
        .fromStream(context.assets.open("service_account_key.json"))
        .createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"))
    credentials.refreshIfExpired()
    val accesstoken = credentials.accessToken
    

person ry-el    schedule 22.04.2020    source источник


Ответы (2)


Не могли бы вы добавить эти области к своим учетным данным:

 https://www.googleapis.com/auth/cloud-platform 
 #(View and manage your data across Google Cloud Platform services)


 https://www.googleapis.com/auth/cloud-vision
 #(Apply machine learning models)

Вы также можете запустить эту команду, чтобы проверить, есть ли у вашей учетной записи службы права доступа. Если это сработает, значит, у вас проблема с кодом.

gcloud auth activate-service-account [ACCOUNT] --key-file=KEY_FILE
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" -H "Content-Type: application/json" https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models
person marian.vladoi    schedule 22.04.2020
comment
После выполнения упомянутой команды u выдает ошибку: {code: 403, message: ваше приложение аутентифицировано с использованием учетных данных конечного пользователя из Google Cloud SDK или Google Cloud Shell, которые не поддерживаются automl.googleapis.com. Мы рекомендуем настроить параметр billing / quota_project в gcloud или использовать учетную запись службы с помощью параметра auth / impersonate_service_account. Дополнительные сведения об учетных записях служб и их использовании в приложении см. На странице cloud.google.com/docs. / authentication., статус: PERMISSION_DENIED}} - person ry-el; 22.04.2020
comment
потому что вам нужно пройти аутентификацию с помощью созданной вами учетной записи службы. В сообщении об ошибке говорится, что вы аутентифицируетесь с учетными данными пользователя. Замените ACCOUNT учетной записью службы, которую вы создали, а KEY_FILE - файлом key.json для этой учетной записи службы. - person marian.vladoi; 22.04.2020
comment
Как правильно пройти аутентификацию с помощью служебной учетной записи? У меня уже есть key.json и я загружаю его напрямую в код из папки с ресурсами. - person ry-el; 23.04.2020

Создайте новую учетную запись службы в IAM & Admin и загрузите новый файл ключа JSON (затем обновите свой код, чтобы он отражал новое имя файла).

Я потратил 12 часов на устранение неполадок и попробовал все возможные решения. Наконец, единственное, что исправило это, - это создание новой учетной записи службы.

Я использую как Windows, так и Linux на базе Debian, эта проблема не специфична для среды. Также я использую свой ключ JSON как в Python, так и в PHP.

person 3D Fan    schedule 21.09.2020