我們在Outlook加載項中使用對話框進行身份驗證。我們在加載項中有邏輯,首先檢查對話框API支持,然後檢查加載項是否被構造 - 在這種情況下,它彈出一個新的認證窗口。最近,OWA的對話框API亮起,並引發了一些問題。OWA:對話API支持
我們修復了一些與我們執行身份驗證(我們使用ADAL.js
)和初始化Office的順序有關的問題。但是,一旦我們超過這些限制,就不會出現對話框可以使用Office.context.ui.messageParent
與加載項進行通信。
此外,即使加載項訂閱Microsoft.Office.WebExtension.EventType.DialogEventReceived
事件,它們在對話框關閉時不會被觸發(通常關閉對話框會返回12006
錯誤代碼,我們會加以注意)。
我創建了一個簡單的Outlook加載項,只打開一個對話框,並驗證它仍然無法與OWA中的加載項進行通信。我已經包含下面的代碼。
外接代碼:
Office.initialize = function (reason) {
$(document).ready(function() {
var resultArea = $("span");
$("button").click(function() {
resultArea.text("Opening dialog");
Office.context.ui.displayDialogAsync(
window.location.origin + "/TestAddin/Dialog.html",
{ height: 75, width: 25 },
function (asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
var dialog = asyncResult.value;
dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, function handleAuthDialogMessage(message) {
dialog.close();
resultArea.text(message);
});
dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogEventReceived, function handleAuthDialogMessage(message) {
resultArea.text("Event encountered");
});
} else {
resultArea.text("Dialog failed");
}
});
});
})
};
對話框代碼:
Office.initialize = function (reason) {
$(document).ready(function() {
Office.context.ui.messageParent("dialog-opened");
})
};
現在我已經調整了我們的插件來先檢查,看看它是否是誣陷,(在這種情況下,打開一個新的認證窗口),然後檢查或使用對話框API。這種方法使我們能夠修復我們的生產缺陷,並重新啓用OWA認證;不過,我想在對話框正常工作或我們的加載項已修復後採取對話:)
是否有人已意識到此問題了?
---更新2/22 ---
看來,對話可現在消息的父母。不幸的是,仍然存在一個突出的錯誤,即關閉對話框不會觸發事件發送到加載項。
如果您可以共享您的清單,指向加載項的Internet部署版本,則可能更容易重新生成。 –