415 Ошибка неподдерживаемого типа носителя - Domo Connector

Поэтому я создаю коннектор, используя инструмент разработчика Domo (им нравится называть его IDE), и я просто не могу заставить компонент аутентификации работать с их библиотеками.

Домо использует httprequest библиотека для основных и oauth типов аутентификации.

У меня проблемы с получением токена через Domo, но я легко могу сделать это через curl или с помощью API-интерфейса Postman.

Вот код ниже:

var client_id = '4969e1ea-71b9-3267-ae7d-4ce0ac6bfa28';
var client_secret = '*****************************';
var user = '*********';
var pass = '*********';

var postData =
{
  data: {
    'grant_type': 'password',
    'username': user,
    'password': pass,
     'client_id': client_id,
    'client_secret': client_secret,
    'scope': 'internal'
  }
};

var res = httprequest.post('https://rest.synthesio.com/security/v1/oauth/token', postData);

DOMO.log('res: ' + res);

Пожалуйста, дайте мне знать, если у вас есть другой подход к этому. Я попытался добавить заголовок в postData сам объект, а также удаление data переменная, оставляя атрибуты как есть, тоже.

1 ответ

Решение

Когда вы вставляете postData как подобный объект, DOMO запускает его через JSON.stringify и отправляет результат в теле запроса.

Вы можете либо закодировать тело запроса вручную, либо использовать функцию httprequest.addParameter, чтобы добавить их. Попробуйте что-то вроде этого:

var client_id = '4969e1ea-71b9-3267-ae7d-4ce0ac6bfa28';
var client_secret = '*****************************';
var user = '*********';
var pass = '*********';

httprequest.addParameter('grant_type', 'password');
httprequest.addParameter('username', user);
httprequest.addParameter('password', pass);
httprequest.addParameter('client_id', client_id);
httprequest.addParameter('client_secret', client_secret);
httprequest.addParameter('scope', 'internal');

var res = httprequest.post('https://rest.synthesio.com/security/v1/oauth/token');

DOMO.log('res: ' + res);
Другие вопросы по тегам