我正在尝试在Azure应用程序服务Web应用程序上使用Google Cloud Vision执行Google反向图像搜索。
我已经生成了一个googleCred.json,Google客户端库使用了googleCred.json来构建API请求。 Google希望可以从名为GOOGLE_APPLICATION_CREDENTIALS的环境变量中使用它。
运行Web应用程序的Azure应用程序服务具有模仿Google客户端库的环境变量的设置。文档为here,并且我已经在此处成功设置了变量:
此外,googleCred.json文件已上传到应用程序服务。这是我跟随documentation使用FTP和FileZilla上传文件的地方:
此外,文件权限会尽可能打开:
但是,当我访问云中的Web应用程序时,会收到以下错误消息:
从位置D:\ site \ wwwroot \ Statics \ googleCred.json读取凭据文件时出错:找不到路径'D:\ site \ wwwroot \ Statics \ googleCred.json'的一部分。请检查环境变量GOOGLE_APPLICATION_CREDENTIALS
的值
我在做什么错?如何在Azure Web应用程序上成功使用Google Cloud Vision API?
答案 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);
});