我正在尝试使用nodejs应用程序中的音频分析器服务。我遇到了未经授权的访问问题,但是当我在卷发中使用它们时,这些凭据可以正常工作。
在本地运行时,在我的app.js文件中包含了音调分析器的数据,如下所示:
var ToneAnalyzerV3 = require('watson-developer-cloud/tone-analyzer/v3');
var toneAnalyzer = new ToneAnalyzerV3({
version: '2017-09-21',
iam_apikey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
});然后我添加了这个,所以我的应用程序在/tone url中侦听post请求:
app.post('/tone', function(req, res, next) {
var params = {'tone_input': req.body}
toneAnalyzer.tone(params, function(err, data) {
if (err) {
return next(err);
}
return res.json(data);
});
});但是当我称它为“未经授权的:访问由于无效的凭据而被拒绝”。
问题是,这些凭据在卷曲中工作得很好:
curl -X POST -u "apikey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX" --header "Content-Type: application/json" --data-binary @tone.json "https://gateway-lon.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21&sentences=false"{"document_tone":{"tones":[{"score":0.6165,"tone_id":"sadness","tone_name":"Sadness"},{"score":0.829888,"tone_id":"analytical","tone_name":"Analytical"}]}}发布于 2019-10-28 10:35:56
在本地运行时,您会遇到未经授权的错误,原因是您的服务托管在https://gateway-lon.watsonplatform.net中。如果您没有在ToneAnalyzerV3构造函数中指定端点/ url,那么API / SDK默认为Dallas。因此,尽管您的凭据对于London可能是正确的,但对于Dallas却是不正确的。
当您将应用程序部署到云(我猜是在伦敦的位置)时,您可能会将服务绑定到应用程序中。这将设置允许SDK确定端点的环境变量。
构造函数应该如下所示:
var toneAnalyzer = new ToneAnalyzerV3({
version: '2017-09-21',
iam_apikey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
url: 'https://gateway-lon.watsonplatform.net/tone-analyzer/api',
});发布于 2019-10-25 09:52:37
我不认为代码有问题(也从未使用过watson之类的东西),但是您可以检查以下几点:
您还应该提供更多的细节,说明音调对象到底是做什么的,并尝试找到调用IBM的位置。
https://stackoverflow.com/questions/58555873
复制相似问题