office word 加载项 adfs 登录

office word add-in adfs login

我有使用 ADAL.js 代码的登录按钮,单击登录按钮后,Office Word 加载项会重定向到 ADFS 登录页面,并显示消息 带你到你所在组织的登录页面,在 ADFS 页面上输入凭据后,Wed 插件 URL 在新浏览器 window 上打开,并且不会重定向回 Office 插件。

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();
        }

enter image description here

我使用对话框 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://docs.microsoft.com/en-us/office/dev/add-ins/develop/dialog-api-in-office-add-ins

在您的 ADAL 配置中添加“popUp: true”,这样它将打开一个对话框并在那里进行处理。