Я пытаюсь получить токен от JS, используя ADAL.js для аутентификации.
В приведенном ниже коде я пытаюсь получить кэшированный пользователя и токен. Если пользователь и токен не кэшированы, я открываю всплывающее окно на фиктивную страницу в CRM, а затем кэширую пользователя и токен.
var getUser = function () {
return new Promise(function (resolve, reject) {
// If the user is cached, resolve the promise immediately.
var user = authContext.getCachedUser();
if (user) {
var cachedToken = authContext.getCachedToken(clientId);
resolve(cachedToken);
return;
}
// The user was not cached. Open a popup window which
// performs the OAuth login process, then signals
// the result.
authContext.config.displayCall = function (url) {
authContext.config.displayCall = null;
var popup = window.open(url, 'auth-popup', 'toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,left=10000, top=10000, width=10, height=10, visible=none');
var intervalId = window.setInterval(function () {
try {
if (popup.location.pathname.indexOf('/' + dummyAuthPage) >= 0) {
authContext.handleWindowCallback(popup.location.hash);
popup.close();
token = authContext.getCachedToken(clientId);
if (token) {
window.clearInterval(intervalId);
resolve(token);
}
else {
reject(authContext.getLoginError());
}
}
} catch (whatever) {
if (popup.closed) {
reject();
}
}
}, 100);
};
Есть ли у нас лучший способ сделать то же самое, особенно без всплывающего окна?
В настоящее время я пытаюсь выполнить Silent Authentication . Но здесь упоминается «На странице содержимого вкладки вызовите microsoftTeams.getContext (), чтобы получить подсказку для входа для текущего пользователя». Эта команда ничего не возвращает в CRM.
Спасибо