javascript - IBM Watson Visual Recognition - 由于凭证无效,访问被拒绝

标签 javascript node.js express ibm-watson visual-recognition

我正在尝试将IBM Watson Visual Recognition 工具与nodejs (express) 结合使用。 我按照 guide 的指示进行操作,但我无法连接该工具。

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应用程序时,我收到了这条消息

Error: Unauthorized: Access is denied due to invalid credentials.

有人知道这个身份验证问题的解决方案吗?

最佳答案

您的仪表板可能如下所示,其中列出了您的 API key 。如果您有一堆 iam_**** 属性,您可能需要使用 iam_apikey 而不是 api_key 进行身份验证。

Watson credentials

根据 Watson Authentication documentation ,您可能应该使用如下所示的代码进行身份验证:

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));
});

在此图像上使用该代码:Wikipedia Fruit ,产生以下结果:

{
  "images": [
    {
      "classifiers": [
        {
          "classifier_id": "food",
          "name": "food",
          "classes": [
            {
              "class": "non-food",
              "score": 0.946
            }
          ]
        }
      ],
      "image": "fruit2.jpg"
    }
  ],
  "images_processed": 1,
  "custom_classes": 0
}

关于javascript - IBM Watson Visual Recognition - 由于凭证无效,访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50703766/

相关文章:

node.js - 在 loopback api 中定义自定义函数的最佳方式

javascript - 如何在自调用的异步函数中插入参数?

javascript - SQL Server 在一次调用中返回两次结果?

javascript anchor 避免点击时滚动到顶部

javascript - angularjs 过滤器只返回完全匹配的值

Node.js promise 、异步或只是回调

apache - 具有反向代理的 express.js session

javascript - 通过变量 .-string 插值访问 JSON 数据

javascript - 异步循环 typescript 数组

node.js - 我是否应该在不同函数调用中使用不同赋值的变量使用 const,但不会在同一调用中重新赋值