Сбой поиска обратного изображения в Google Cloud Vision в службе приложений Azure из-за невозможности найти файл GOOGLE_APPLICATION_CREDENTIALS - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь выполнить обратный поиск изображений Google с помощью Google Cloud Vision в веб-приложении службы приложений Azure.

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

Служба приложения Azure, которая запускает веб-приложение, имеет параметры, которые имитируют переменные среды для клиентских библиотек Google. Документация здесь , и я успешно установил переменную здесь:

enter image description here

Кроме того, файл googleCred.json был загружен в службу приложений. Вот документация , которую я использовал, чтобы использовать FTP и FileZilla для загрузки файла:

enter image description here

Кроме того, права доступа к файлам настолько открыты, насколько они могут быть:

enter image description here

Однако, когда я получаю доступ к веб-приложению в облаке, я получаю следующее сообщение об ошибке:

Ошибка чтения файла учетных данных из местоположения D: \ site \ wwwroot \ Statics \ googleCred.json: Не удалось найти часть пути 'D: \ site \ wwwroot \ Statics \ googleCred.json'. Пожалуйста, проверьте значение переменной среды GOOGLE_APPLICATION_CREDENTIALS

Что я делаю не так? Как успешно использовать API Google Cloud Vision в веб-приложении Azure?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

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

Исходя из этого, я рекомендую вам проверить, правильно ли назначены файл и путь к файлу учетных данных, а также следовать руководству Получение и предоставление учетных данных службы * вручную для явного укажите файл учетной записи службы непосредственно в свой код; Таким образом, вы сможете установить его навсегда и проверить, правильно ли вы передаете учетные данные службы.

Передача пути к ключу учетной записи службы в примере кода:

// Imports the Google Cloud client library.
const Storage = require('@google-cloud/storage');

// Instantiates a client. Explicitly use service account credentials by
// specifying the private key file. All clients in google-cloud-node have this
// helper, see https://github.com/GoogleCloudPlatform/google-cloud-node/blob/master/docs/authentication.md
const storage = new Storage({
  keyFilename: '/path/to/keyfile.json'
});

// Makes an authenticated API request.
storage
  .getBuckets()
  .then((results) => {
    const buckets = results[0];

    console.log('Buckets:');
    buckets.forEach((bucket) => {
      console.log(bucket.name);
    });
  })
  .catch((err) => {
    console.error('ERROR:', err);
  });
0 голосов
/ 11 сентября 2018

Я пишу здесь, так как не могу комментировать, но, на первый взгляд, нужно ли указывать букву "D:" в пути? Я предполагаю, что вы загрузили файл в службу приложений, поэтому попробуйте указать это значение для пути "\ site \ wwwroot \ Statics \ googleCred.json"

...