IBM IAM IamAuthenticator getToken не является функцией
Я пытаюсь получить токен для использования IBM Watson Speech-to-Text в своем приложении. Вот мой код:
const { IamAuthenticator } = require('ibm-cloud-sdk-core');
const authenticator = new IamAuthenticator({
apikey: 'myApiKey',
});
authenticator.getToken(function (err, token) {
if (!token) {
console.log('error: ', err);
} else {
// use token
}
});
Сообщение об ошибке authenticator.getToken is not a function
.
В документации говорится:
string IBM.Cloud.SDK.Core.Authentication.Iam.IamAuthenticator.GetToken ( )
Я пробовал оба getToken
а также GetToken
. То же сообщение об ошибке. Код несложный, что я делаю не так?
2 ответа
Это то, что у меня сработало с последними ibm-watson
узел-SDK,
Установите node-sdk с помощью этой команды
npm install --save ibm-watson
Затем используйте этот фрагмент кода в своем app.js
или server.js
файл узла для получения токена доступа IAM
const watson = require('ibm-watson/sdk');
const { IamAuthenticator } = require('ibm-watson/auth');
// to get an IAM Access Token
const authorization = new watson.AuthorizationV1({
authenticator: new IamAuthenticator({ apikey: '<apikey>' }),
url: ''
});
authorization.getToken(function (err, token) {
if (!token) {
console.log('error: ', err);
} else {
console.log('token: ', token);
}
});
Вы также можете напрямую использовать IamAuthenticator с преобразованием речи в текст.
const fs = require('fs');
const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1');
const { IamAuthenticator } = require('ibm-watson/auth');
const speechToText = new SpeechToTextV1({
authenticator: new IamAuthenticator({ apikey: '<apikey>' }),
url: 'https://stream.watsonplatform.net/speech-to-text/api/'
});
const params = {
// From file
audio: fs.createReadStream('./resources/speech.wav'),
contentType: 'audio/l16; rate=44100'
};
speechToText.recognize(params)
.then(response => {
console.log(JSON.stringify(response.result, null, 2));
})
.catch(err => {
console.log(err);
});
// or streaming
fs.createReadStream('./resources/speech.wav')
.pipe(speechToText.recognizeUsingWebSocket({ contentType: 'audio/l16; rate=44100' }))
.pipe(fs.createWriteStream('./transcription.txt'));
См. Мой ответ в другом посте, который может помочь. Ты используешьBearerTokenAuthenticator
если вы хотите самостоятельно управлять процессом аутентификации токена.