当我尝试使用cloud vision API运行firebase函数并测试这些功能时。我收到此错误:
错误:{错误:7 PERMISSION_DENIED:尚未安装Cloud Vision API 在项目563584335869中使用之前,或已禁用。通过启用它 来访 https://console.developers.google.com/apis/api/vision.googleapis.com/overview?project=563584335869 然后重试。如果您最近启用了此API,请等待几分钟 传播到我们的系统并重试的操作。
我无法识别此项目编号,并且已经使用我正在使用的项目启用了API。我使用已启用API的项目设置了GOOGLE_APPLICATION_CREDENTIALS
。我做错了什么事?
答案 0 :(得分:1)
通常由于多种原因(例如文件丢失,凭据路径无效,环境变量分配不正确)等原因而未正确认证时引发此错误消息。
基于此,我建议您验证凭据文件和文件路径的正确分配,并遵循Obtaining and providing service account credentials manually指南以明确指定服务帐户文件直接进入您的代码;这样,您将能够永久设置它,并验证您是否正确传递了服务凭据。此外,您可以查看this link,其中包含有用的逐步指南,可将Firebase功能与Vision API结合使用,其中包括Node.js的Vision对象身份验证代码。
在代码示例中将路径传递到服务帐户密钥:
// 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);
});
答案 1 :(得分:1)
对于那些仍然遇到此问题的人来说,对我有用的是
const client = new vision.ImageAnnotatorClient({
keyFilename: 'serviceAccountKey.json'
})
答案 2 :(得分:0)
API has not been used in project 563584335869
如果您单击该链接已在控制台中打印出来,它将引导您进入该URL。 https://console.developers.google.com/apis/api/vision.googleapis.com/overview?project=firebase-cli
因此,该项目ID表示您使用的是'firebase-cli'的项目证书,而不是您的
。如果您尝试设置环境的值,则可以在目录中找到变量
~/.config/firebase/...credentials.json
有时您尝试覆盖后将不会替换它。
但是,您可以在代码中设置凭据。
您可以在此处找到获取证书的方法。 https://cloud.google.com/iam/docs/creating-managing-service-account-keys
凭据格式就是这样。
{
"type": "service_account",
"project_id":
"private_key_id":
"private_key":
"client_email":
"client_id":
"auth_uri":
"token_uri":
"auth_provider_x509_cert_url":
"client_x509_cert_url":
}
当我使用另一个Google API时,遇到了与您完全相同的错误。并解决了包括凭据内部代码在内的问题。
const textToSpeech = require("@google-cloud/text-to-speech")
const keyfile = require(".././my-project.json")
const config = {
projectId: keyfile.project_id,
keyFilename: require.resolve(".././my-project.json")
};
const TTS_Client = new textToSpeech.TextToSpeechClient(config)