Вызов API Google Vision через браузер для обнаружения текста документа из файла, хранящегося в Firestore - PullRequest
0 голосов
/ 13 апреля 2020

вызов API из браузера (React with Firebase auth) в API Google Vision, чтобы получить содержимое файла .pdf, который хранится в базе данных Firestore. Результат должен быть сохранен как. json в Firestore. Учетная запись службы была создана и имеет доступ к системе. Ожидаемый ответ выглядит следующим образом:

    {
      "name": "projects/usable-auth-library/operations/1efec2285bd442df"
    }

Ответ, который я получаю, - 403, который указывает, что что-то в процессе аутентификации пошло не так. В Firestore №. json с текстовым содержимым создается.

Функция для вызова выглядит так:

  const test = () => {
    fetch("https://vision.googleapis.com/v1/files:asyncBatchAnnotate", {
      method: "post",
      requests: [
        {
          inputConfig: {
            gcsSource: {
              uri: "gs://XXXX.appspot.com/images/XXXX.pdf"
            },
            mimeType: "application/pdf"
          },
          features: [
            {
              type: "DOCUMENT_TEXT_DETECTION"
            }
          ],
          outputConfig: {
            gcsDestination: {
              uri: "gs://XXXX.appspot.com/images/output"
            },
            batchSize: 1
          }
        }
      ]
    }).then(res => console.log(res))

Есть идеи, что я делаю не так? Или есть библиотека React, которая обрабатывает этот процесс из коробки, или более подробное пошаговое руководство для выполнения таких вызовов на стороне клиента к API? Я взглянул на npm package @ google-cloud / vision, но, похоже, это пока не работает на стороне клиента.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

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

Как правило, у вас не будет служебной учетной записи или ключа API в вашем интерфейсе, потому что тогда кто-то может украсть / использовать учетную запись службы / ключ API и вы должны оплатить расходы. Лучше позвонить в Vision API из вашего бэкэнда.

0 голосов
/ 13 апреля 2020

Вы можете найти и пример здесь о том, как использовать API с curl.

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
https://vision.googleapis.com/v1/images:annotate -d @request.json

Поэтому вы должны использовать свою служебную учетную запись, чтобы подписать токен jwt и получить токен доступа. из Google Cloud. Затем вы должны использовать свой токен доступа в почтовом запросе.

Ваше приложение готовится сделать авторизованные вызовы API с использованием учетных данных учетной записи службы для запроса токена доступа с сервера аутентификации OAuth 2.0.

Наконец, ваше приложение может использовать токен доступа для вызова API Google.

Использование OAuth 2.0 для серверных приложений

Пожалуйста, следуйте Firebase Authenticate REST Requests для примера того, как сгенерировать токен доступа с node.js

...