我试图在nodejs (express)中使用IBM视觉识别工具。我遵循了指南的指示,但无法与工具连接。
var fs = require('fs');
var VisualRecognitionV3 = require('watson-developer-cloud/visual-recognition/v3');
var visualRecognition = new VisualRecognitionV3({
version: '2018-03-19',
api_key: 'api key',
});
var images_file = fs.createReadStream('public/images/fruitbowl.jpg');
var classifier_ids = ["food"];
var params = {
images_file: images_file,
classifier_ids: classifier_ids
};
visualRecognition.classify(params, function(err, response) {
if (err)
console.log(err);
else
var resp = JSON.stringify(response, null, 2)
console.log(JSON.stringify(response, null, 2))
});
当我运行我的nodejs应用程序时,我收到了以下消息
错误:未经授权:访问因凭据无效而被拒绝。
有人知道这个认证问题的解决方案吗?
发布于 2018-06-05 08:01:45
您的仪表板看起来可能是这样的,列出了API键。如果您有一堆iam_****
属性,您可能需要使用iam_apikey
而不是api_key
进行身份验证。
根据沃森认证文档,您可能应该使用如下代码进行身份验证:
const fs = require("fs");
const VisualRecognition = require("watson-developer-cloud/visual-recognition/v3");
const vr = new VisualRecognition({
version: "2018-03-19",
iam_apikey: "MY_API_KEY" // Instead of api_key
});
const images_file = fs.createReadStream("./fruit.jpg");
vr.classify({
images_file,
classifier_ids: ["food"]
}, (err, res) => {
if (err) {
throw err;
}
console.log(JSON.stringify(res));
});
使用此图像上的代码:维基百科水果,将产生以下结果:
{
"images": [
{
"classifiers": [
{
"classifier_id": "food",
"name": "food",
"classes": [
{
"class": "non-food",
"score": 0.946
}
]
}
],
"image": "fruit2.jpg"
}
],
"images_processed": 1,
"custom_classes": 0
}
https://stackoverflow.com/questions/50703766
复制相似问题