J. G.
J. G.

Reputation: 1832

Autodesk 2 Legged Authentication in javascript, two different errors

I get two different errors depending on if I GET or POST, but my autodesk rep assures me that using postman (not javascript) the resource does exist and he can get an authentication token.

If I do:


  var url = "https://developer.api.autodesk.com/authentication/v1/authenticate";
  var options = {
    "method": "GET",
    "headers":{"Content-Type": "application/x-www-form-urlencoded",},
    "body": {
    "client_id" : "Z---F",
    "client_secret" : "m---8",
    "grant_type": "client_credentials",
    "scope": "data:read"  
    }
  
    }
 ;
 console.log(url);
 console.log("Options:\n"+JSON.stringify(options));
var res = UrlFetchApp.fetch(url, options).getContentText();
Logger.log(res);
}

I get

Exception: Request failed for https://developer.api.autodesk.com returned code 404. Truncated server >response: { "developerMessage":"The requested resource does not exist.", "moreInfo": >https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/error_hand... (use muteHttpExceptions >option to examine full response)

if I do

  var url = "https://developer.api.autodesk.com/authentication/v1/authenticate";
  var options = {
    "method": "POST",
    "headers":{"Content-Type": "application/x-www-form-urlencoded",},
    "body": {
    "client_id" : "Z---F",
    "client_secret" : "m---8",
    "grant_type": "client_credentials",
    "scope": "data:read"  
    }
  
    }
 ;
 console.log(url);
 console.log("Options:\n"+JSON.stringify(options));
var res = UrlFetchApp.fetch(url, options).getContentText();
Logger.log(res);
}

I get

Exception: Request failed for https://developer.api.autodesk.com returned code 400. Truncated server >response: {"developerMessage":"The required parameter(s) client_id,client_secret,grant_type not present >in the request","errorCode":"AUTH-008","more info":"h... (use muteHttpExceptions option to examine full >response)

Any thoughts why it would say a resource doesn't exist that does exist? There is no personal info on here so the fact that he is doing it versus me doing it shouldn't matter. All the posts I could find on this issue were dealing with the curl version of this call rather than a javascript with options bundle

Upvotes: 0

Views: 132

Answers (1)

Petr Broz
Petr Broz

Reputation: 9942

The URL is definitely valid (here's the API reference for this endpoint), so I would recommend debugging the actual code that's making the request, for example:

  • debug the UrlFetchApp class (where is it coming from btw?) and its fetch method, making sure that it's no modifying the url you're passing in
  • if the code is running in a browser, try looking at the DevTools Network tab and see if the request actually goes out to https://developer.api.autodesk.com/authentication/v1/authenticate
  • if the code is running in a browser, try using the built-in Fetch API instead

Also, I'm not sure if this is something handled automatically by the UrlFetchApp but specifying the content type of your request as application/x-www-form-urlencoded and then passing in a JSON object as the body doesn't seem right. As you can see in the documentation the request body should look more like this:

client_id=<your client id>&
client_secret=<your client secret>&
grant_type=client_credentials&
scope=data:read

Upvotes: 0

Related Questions