我正在尝试使用ADAL.js进行身份验证以从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中返回任何内容。
谢谢