我们在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部署版本,则可能更容易重新生成。 –