Создание OAuth 2.0 токена доступа с JavaScript - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь сгенерировать токены OAuth 2.0 через API OneLogin. Я прочитал их документацию и смог настроить Postman для тестирования и успешно получить токены доступа.

Однако, когда я пытаюсь выполнить тот же запрос программно через JavaScript fetch не работает.

Код:

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 message

Сообщение об ошибке указывает, что grant_type отсутствует, но я передаю аргумент grant_type в теле запроса POST в виде строки (raw) как требует документация, и я все еще получаю ошибку. Я даже пытался написать '{"grant_type": "client_credentials"}' в строке с параметром 'body', но все равно получаю то же сообщение об ошибке.

Есть идеи? Заранее спасибо!

1 Ответ

0 голосов
/ 26 апреля 2020

Вы используете кодировку JSON для параметров. Запрос токена доступа должен отправлять параметры формы в кодировке application/x-www-form-urlencoded.

См. Стандарт OAuth2 здесь: https://tools.ietf.org/html/rfc6749#section -4.1.3

...