I'm trying to generate OAuth 2.0 Tokens via OneLogin's API. I read through their documentation and was able to set up Postman to test, and grab the access tokens successfully.
However, when I try to do the same request programmatically via JavaScript fetch, it doesn't work.
Code:
function getAuthToken() {
// POST Request (To get Access Token)
var url = 'https://api.us.onelogin.com/auth/oauth2/v2/token?grant_type=client_credentials'
var postOptions = {
'method': 'POST',
'headers': {
'Content-Type': 'application/json; charset=utf-8',
'Authorization' : 'client_id:xxxx, client_secret:xxxx'
},
'redirect': 'follow'
};
var authToken = UrlFetchApp.fetch(url, postOptions);
}
Error
The error message indicates that grant_type is missing, but I'm passing the grant_type argument in the body of the POST request as a string (raw) like the documentation requires, and I'm still receiving the error. I even tried to write '{"grant_type": "client_credentials"}'
in-line with the 'body' parameter, but still receive the same error message.
Any ideas? Thank you in advance!
You are using a JSON encoding for the parameters. The access token request must send the form parameters using application/x-www-form-urlencoded
encoding.
See the OAuth2 standard here: https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3