Office Word 加载项 ADFS 登录


我有使用 ADAL.js 代码的登录按钮,单击登录按钮后,Office Word 加载项将重定向到 ADFS 登录页面,

并显示消息">将你带到组织的登录页面",在 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",以便它会在其中打开一个对话框并进行处理。

最新更新