Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ibm cloud IBM Watson IAM代币是否适用于所有服务或特定于每个服务,例如语音到文本?_Ibm Cloud_Ibm Watson_Speech To Text_Ibm Iam - Fatal编程技术网

Ibm cloud IBM Watson IAM代币是否适用于所有服务或特定于每个服务,例如语音到文本?

Ibm cloud IBM Watson IAM代币是否适用于所有服务或特定于每个服务,例如语音到文本?,ibm-cloud,ibm-watson,speech-to-text,ibm-iam,Ibm Cloud,Ibm Watson,Speech To Text,Ibm Iam,IBM表示,以下节点后端代码使您能够使用API密钥让SDK管理令牌的生命周期。SDK请求访问令牌,确保访问令牌有效,并在必要时刷新它。 const SpeechToTextV1=require('ibm-watson/speech-to-text/v1'); const{iamsauthenticator}=require('ibm-watson/auth'); const speechToText=新建speechtotexv1({ 验证器:新验证器({ apikey:“{apikey}”,

IBM表示,以下节点后端代码使您能够
使用API密钥让SDK管理令牌的生命周期。SDK请求访问令牌,确保访问令牌有效,并在必要时刷新它。

const SpeechToTextV1=require('ibm-watson/speech-to-text/v1');
const{iamsauthenticator}=require('ibm-watson/auth');
const speechToText=新建speechtotexv1({
验证器:新验证器({
apikey:“{apikey}”,
}),
url:“{url}”,
});
如何从
speechToText
获取令牌,以传递到在浏览器中运行的前端Angular应用程序?我尝试调用方法
getToken
,以获取令牌:

const SpeechToTextV1=require('ibm-watson/speech-to-text/v1');
const{iamsauthenticator}=require('ibm-watson/auth');
const speechToText=新建speechtotexv1({
验证器:新验证器({
apikey:“我的api密钥”,
}),
url:“我的url”,
});
getToken(函数(err,token){
如果(!令牌){
log('error:',err);
}否则{
console.log(令牌);
//用代币做更多的事情
}
});
那没用。错误消息是speechToText.getToken不是函数。我是否应该尝试
speechToText.authenticator.getToken

我尝试从
ibm watson/sdk
而不是从
ibm watson/speech-to-text/v1
获取令牌

const-watson=require('ibm-watson/sdk');
const{iamsauthenticator}=require('ibm-watson/auth');
const authorization=new watson.AuthorizationV1({
验证器:新的IAM验证器({apikey:'my api key'}),
url:“我的url”
});
authorization.getToken(函数(err,token){
如果(!令牌){
log('error:',err);
}否则{
console.log(令牌);
//用代币做事
}
});
得到一个冒烟的新代币。但是代币不起作用。当我运行
WatsonSpeech.SpeechToText.recognizeMicrophone
时,我收到一条错误消息
HTTP身份验证失败;没有可用的有效凭据


似乎每个IBMWatson服务都需要自己的令牌,该令牌由特定于服务的URL创建。我将Speech-to-Text URL放入
ibmwatson/sdk
,因此我应该获得正确的令牌。我不明白为什么令牌不起作用。

IBM Cloud使用它所调用的来管理对资源的访问。IAM有几个允许细粒度安全控制的概念。您可以向用户或角色授予作用域访问权限。因此,一个用户可以是资源的管理者,而另一个用户只能是读卡器

现在,要访问IAM控制的Watson服务等服务,您的用户名/密码或API密钥将转换为承载和刷新令牌,承载令牌仅在特定时间内有效,然后需要新的刷新令牌。这可能是您看到不同标记的原因

您可能已经看到了底层和一些函数


长话短说:当您成功地创建IamAuthenticator时,您应该能够请求令牌并使用它。更好的是,您可以将IAM验证器传递给许多服务,包括Watson服务,以初始化会话。代码“知道”如何获取身份验证信息并使用它对其他服务进行身份验证。

请查看节点SDK中有关自己管理令牌的“提供凭据”部分,如果您想这样做:

如果要管理生命周期,请使用BearTokenAuthenticator 你自己有关详细信息,请参阅。如果你愿意 要切换验证器,必须覆盖验证器 直接的财产

这里有一个来自“身份验证”主题的链接,可以帮助您理解访问过程。看