由于无法找到GOOGLE_APPLICATION_CREDENTIALS文件,因此无法在Azure App Service上进行Google Cloud Vision反向图像搜索

时间:2018-09-05 13:17:29

标签: azure google-api azure-web-app-service google-cloud-vision azure-app-service-plans

我正在尝试在Azure应用程序服务Web应用程序上使用Google Cloud Vision执行Google反向图像搜索。

我已经生成了一个googleCred.json,Google客户端库使用了googleCred.json来构建API请求。 Google希望可以从名为GOOGLE_APPLICATION_CREDENTIALS的环境变量中使用它。

运行Web应用程序的Azure应用程序服务具有模仿Google客户端库的环境变量的设置。文档为here,并且我已经在此处成功设置了变量:

enter image description here

此外,googleCred.json文件已上传到应用程序服务。这是我跟随documentation使用FTP和FileZilla上传文件的地方:

enter image description here

此外,文件权限会尽可能打开:

enter image description here

但是,当我访问云中的Web应用程序时,会收到以下错误消息:

  

从位置D:\ site \ wwwroot \ Statics \ googleCred.json读取凭据文件时出错:找不到路径'D:\ site \ wwwroot \ Statics \ googleCred.json'的一部分。请检查环境变量GOOGLE_APPLICATION_CREDENTIALS

的值

我在做什么错?如何在Azure Web应用程序上成功使用Google Cloud Vision API?

2 个答案:

答案 0 :(得分:0)

我在这里写这是因为我无法发表评论,但是快速浏览一下,路径中的“ D:”是否必要?我假设您已将文件上传到应用程序服务,因此请尝试使用路径“ \ site \ wwwroot \ Statics \ googleCred.json”的此值

答案 1 :(得分:0)

通常由于多种原因(例如文件丢失,凭据路径无效,环境变量分配不正确)等原因而未正确认证时引发此错误消息。

基于此,我建议您验证凭据文件和文件路径的正确分配,并遵循Obtaining and providing service account credentials manually指南以明确指定服务帐户文件直接进入您的代码;这样,您将能够对其进行永久设置,并验证您是否正确传递了服务凭据。

在代码示例中将路径传递到服务帐户密钥:

// 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);
  });