问题
I'm trying to use IBM Watson Visual Recognition tool with nodejs (express). I followed the instruction from the guide, but I can't connect with the tool.
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))
});
When I run my nodejs app, I got this message
Error: Unauthorized: Access is denied due to invalid credentials.
Does someone know the solution to this authentification problem?
回答1:
Your dashboard likely looks like this with your API key listed. If you have a bunch of iam_****
properties, you probably need to authenticate using the iam_apikey
instead of api_key
.
Per the Watson Authentication documentation, you should probably be authenticating with code that looks like this:
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));
});
Using that code on this image: Wikipedia Fruit, yields the following:
{
"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/ibm-watson-visual-recognition-access-is-denied-due-to-invalid-credentials