我一直在尝试向 Google Video Intelligence API 发送 SAFE_SEARCH_DETECTION(在 node.js 中)的请求,但我一直遇到同样的错误:
错误:{ 错误:请求包含无效参数。在/Users/paulsteenkiste/node_modules/grpc/src/node/src/client.js:569:15 代码:3,元数据:元数据{_internal_repr:{}},注意:'重试方法发生异常,未归类为短暂的' }
我试图深入研究错误中列出的那个 client.js 文件,但它不是很有启发性。这是产生此错误的代码:
const firebase = require('firebase');
firebase.initializeApp({
serviceAccount: "./service-account.json",
apiKey: "<API key>",
databaseURL: "<My Database>"
});
// Imports the Google Cloud Video Intelligence library
const Video = require('@google-cloud/video-intelligence');
// Instantiates a client
const video = Video();
firebase.auth().signInWithEmailAndPassword("<My email>", "<My password>")
.then(function(user) {
// The GCS filepath of the video to analyze
const gcsUri = '<File location>';
const request = {
inputUri: gcsUri,
features: ["SAFE_SEARCH_DETECTION"]
};
// Human-readable likelihoods
const likelihoods = ['UNKNOWN', 'VERY_UNLIKELY', 'UNLIKELY', 'POSSIBLE', 'LIKELY', 'VERY_LIKELY'];
// Detects unsafe content
video.annotateVideo(request)
.then((results) => {
const operation = results[0];
console.log('Waiting for operation to complete...');
return operation.promise();
})
.then((results) => {
// Gets unsafe content
const safeSearchResults = results[0].annotationResults[0].safeSearchAnnotations;
console.log('Safe search results:');
safeSearchResults.forEach((result) => {
console.log(`Time: ${result.timeOffset / 1e6}s`);
console.log(`\tAdult: ${likelihoods[result.adult]}`);
console.log(`\tSpoof: ${likelihoods[result.spoof]}`);
console.log(`\tMedical: ${likelihoods[result.medical]}`);
console.log(`\tViolent: ${likelihoods[result.violent]}`);
console.log(`\tRacy: ${likelihoods[result.racy]}`);
});
})
.catch((err) => {
console.error('ERROR:', err);
});
})
.catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorMessage);
});
(请注意,这实际上是从 Google 的文档中复制和粘贴的,网址为https://cloud.google.com/video-intelligence/docs/analyze-safesearch)。service-account.json 是我创建服务帐号时下载的文件,和上面的文件在同一个文件夹下。我认为没有必要进行 firebase 身份验证,但我想确保这不是问题。我已经启用了 API 并且可以完全访问该项目,所以这些都不是问题。
我相信问题出在服务帐户上,但无论我尝试什么,都会出现相同的错误。我尝试过的一些事情:
- 从终端设置 GOOGLE_APPLICATION_CREDENTIALS
- 为该服务帐户提供“套件域范围委派”
- 公开文件
- 执行此处答案推荐的“gsutil”命令:向 GCP Video Intelligence API 发出请求时权限被拒绝
关于问题是什么的任何想法?