Как разрешить веб-приложению, написанному на простом Javascript, взаимодействовать с Restful API модели прогнозирования Google AutoML? - PullRequest
0 голосов
/ 10 сентября 2018

Похоже, что повсюду много документации о том, как использовать Google Cloud Platform и ее причудливый сервис AutoML. Но я не смог найти ничего, что решало бы мою проблему, пытаясь получить прогноз от обученной модели на AutoML через локальный веб-сайт. Код сайта находится по этой ссылке: https://pastebin.com/xsfkYf6C

Все, что я получаю взамен загрузки изображения и нажатия кнопки «Процесс» на этом сайте:

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }
}

Я, конечно, где-то допустил некоторые ошибки, но совершенно не представляю, как бы это исправить, или, может быть, потому что я слишком туп, чтобы понять это. Мое исследование не дало очень мало результатов. Эта статья может помочь понять, что такое AutoML Restful API: https://cloud.google.com/vision/automl/docs/reference/rest/v1beta1/projects.locations.models/predict

Ценю любые ваши предложения и исправления кода. Большое спасибо и хорошего дня!

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Ошибка может означать, что вы используете ключ API или предоставленный токен неверен / неправильно сформирован. Я думаю, что создать токен с использованием Playground, ServerSide, Javascript и т. Д. Не удастся из-за отсутствия областей OAuth2.0 для AutoML, возможно, потому что все еще находится в бета-версии.

Учитывая, что токен, сгенерированный из gcloud, работает, я могу предложить программно сгенерировать токен , выдавая себя за учетную запись службы до , сгенерировать токен , в этом примере содержит все кусочки головоломки. Это означает, что ваш пользователь может создать токен учетной записи службы от имени вашей службы

Точки, которые следует учитывать при выполнении кода:

  1. Включить API Identity and Access Management (IAM).
  2. Обновите код в соответствии с вашей собственной конфигурацией, проектом и файлом json.
  3. Используйте общую область видимости: https://www.googleapis.com/auth/cloud-platform в качестве jwt_scope.

ВАЖНО: Python-код, который он использует urllib и httplib, означает, что он может быть преобразован в запросы POST с некоторыми дополнительными усилиями (для использования в вашем javascript)

Сообщите нам, работает ли он для вашего конкретного варианта использования!

0 голосов
/ 10 сентября 2018

Вам нужно передать свой ключ API в вызов REST API следующим образом:

https://automl.googleapis.com/v1beta1/projects/a...1/locations/us-central1/models/ICN...1:predict?key=API_KEY

Чтобы создать ключ API, вам нужна учетная запись Google Cloud, поскольку она бесплатна только до определенного момента, и с вас будет взиматься плата.

Поэтому вам следует обезопасить этот ключ и убедиться, что он не виден публично (поэтому не вставляйте исходный код HTML, бэкэнд должен обрабатывать этот вызов).

Подробнее здесь

...