Search code examples
javascriptoauthoauth-2.0httprequestdomo

415 Unsupported Media Type error - Domo Connector


So I'm building a connector using the Domo developer tool (they like to call it an IDE) and I just can't seem to get the authentication piece working with their libraries.

Domo uses httprequest library for basic and oauth types of authentication.

I'm having trouble getting token back through Domo, but I can easily do it through a curl or by using the Postman api tool.

Here's the code below:

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);

Pleae let me know if you have a different way of approaching this. I've tried to add the header within the postData object itself as well as removing the data variable, leaving the attributes as is, too.


Solution

  • When you past the postData as an object like that, DOMO will run it through JSON.stringify and send the result in the request body.

    You can either encode the request body manually or use their httprequest.addParameter function to add them. Try something like this:

    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);