Используйте собственный код Node.JS, чтобы получить WSO2 access_token - PullRequest
0 голосов
/ 11 октября 2018

Я пытался использовать собственный код Node.JS в Node 8 для получения токена доступа из WSO2 с моим идентификатором клиента и секретом клиента.Я получаю следующую ошибку: Неподдерживаемый метод аутентификации клиента!

Вот мой код:

const querystring = require('querystring');
const https = require('https');

var postData = querystring.stringify({
  'grant_type' : 'client_credentials'
});

var options = {
  hostname: 'api.somedomain.com',
  port: 443,
  path: '/token',
  method: 'POST',
  headers: {
     'Content-Type': 'application/x-www-form-urlencoded',
     'Content-Length': postData.length
  }
};

var req = https.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', (data) => {
     process.stdout.write(data);
  });
});

req.on('error', (err) => {
  console.error(err);
});

req.write(postData);
req.end();

Когда я пытаюсь включить другой параметр параметра 'auth' для идентификатора клиента и секрета клиентазатем он говорит мне: «TypeError: первый аргумент должен быть строкой, буфером, ArrayBuffer, Array или массивоподобным объектом».

Любая помощь в том, как сделать эту работу, очень ценится.

1 Ответ

0 голосов
/ 11 октября 2018

Похоже, вы пропустили заголовок Authorization с запросом.Я не эксперт по javascript / node, но генерация токенов работает после добавления заголовка Authorization в раздел headers, как показано ниже.Я использовал localhost для целей тестирования.

var auth = 'Basic ' + Buffer.from("nM_ftrK2pjoBW4JofE21xI1cP0Ya" + ':' + "jmFJIgC5QMDkU_HxQKiDUbp5UAca").toString('base64');

var options = {
    hostname: 'localhost',
    port: 8243,
    path: '/token',
    method: 'POST',

    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': postData.length,
        'Authorization': auth
    }
};

Правильное значение (Authorization : Basic Base64(consumer-key:consumer-secret)) должно быть передано с запросом токена при вызове конечной точки токена для получения access_token.

...