Я пытаюсь получить токен доступа из конечной точки /token
платформы идентификации Office365 через Поток предоставления учетных данных клиента OAuth 2.0 . У меня зарегистрировано приложение, идентификатор и секретный номер клиента и т. Д. c ...
Я могу сделать POST-запрос в Postman и получить маркер доступа без проблем:
Однако, когда я пытаюсь выполнить запрос POST через JavaScript (через скрипт Google Apps), я получаю сообщение об ошибке: AADSTS900144: The request body must contain the following parameter: 'grant_type'
Я уже сделал это в Google ошибки и нашли кучу разных решений, и пытались реализовать их безрезультатно. Я предполагаю, что это связано с кодировкой URL, но не могу понять.
Код:
function getO365() {
// POST Request (To get Access Token)
var tenantID = 'longstringhere'
var appID = 'longstringhere'
var appSecret = 'longstringhere'
var graphScore = 'https://graph.microsoft.com/.default'
var url = 'https://login.microsoftonline.com/' + tenantID + '/oauth2/v2.0/token'
var data = {
'client_id': appID,
'scope': graphScore,
'client_secret': appSecret,
'grant_type': 'client_credentials'
};
var postOptions = {
'method': 'POST',
'headers': {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
},
'body': data,
'redirect': 'follow'
};
var authToken = UrlFetchApp.fetch(url, postOptions);
}
Единственная реальная разница между моим кодом и JavaScript Код извлечения, который я извлек из Почтальона:
var urlencoded = new URLSearchParams();
urlencoded.append("client_id", "longstringhere");
urlencoded.append("scope", "https://graph.microsoft.com/.default");
urlencoded.append("client_secret", "longstringhere");
urlencoded.append("grant_type", "client_credentials");
Когда я пытаюсь использовать URLSearchParams
в скрипте Google Apps, я получаю эту ошибку: ReferenceError: URLSearchParams is not defined
Любые идеи ? Заранее спасибо!