并显示消息">将你带到组织的登录页面",在 ADFS 页面上输入凭据后,星期三加载项 URL 将在新的浏览器窗口中打开,并且不会重定向回 Office 加载项。
办公室加载项登录页面执行没有获取登录用户的详细信息,下面是我的代码和屏幕截图
var authContext = new AuthenticationContext(config);
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
if (isCallback && !authContext.getLoginError()) {
window.location = authContext._getItem(authContext.CONSTANTS.STORAGE.LOGIN_REQUEST);
}
var user = authContext.getCachedUser();
if (!user) {
authContext.login();
}
在此处输入图像描述
我使用对话框 api 来解决这个问题。
首先,使用以下方法打开指向 adfs 页面的对话框:
var dialog;
Office.context.ui.displayDialogAsync(ADFS_URL_HERE, {height: 30, width: 20},
function (asyncResult) {
dialog = asyncResult.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, processMessage);
}
);
打开后,一旦使用以下命令获取用户,就可以关闭它(或通过用户(:
Office.context.ui.messageParent({"type":"closeDialog"});
和处理程序函数:
function processMessage(arg) {
var messageFromDialog = JSON.parse(arg.message);
if(messageFromDialog.type == "closeDialog"){
dialog.close();
}
}
您可以在此处阅读有关对话框 api 的更多信息:https://learn.microsoft.com/en-us/office/dev/add-ins/develop/dialog-api-in-office-add-ins
ADAL 配置中添加"popUp: true",以便它会在其中打开一个对话框并进行处理。