Справочная информация:
У меня есть надстройка outlook, которая в основном открывает диалог входа в систему, который открывает страницу надстройки, размещенную на моем веб-сайте, отсюда пользователь перенаправляется на auth0, откуда он перенаправляется на login.live.com и после авторизации я получаю либо код, либо ошибку вернуться на другую страницу снова на моем сайте.
Теперь все работает нормально в толстом клиенте Outlook. Когда я закрываю диалоговое окно вручную, я получаю правильный код ошибки в родительском.
Проблема:
При использовании OWA и размещении кода надстройки на моем веб-сайте элемент управления не возвращается к части из диалогового окна.
Я уже добавил все URL, которые пользователь может перейти в «Домены приложений». И подтвердили, что родительское и дочернее окна размещены в одном домене (и поддомене).
Код
manifest.xml
<AppDomains>
<AppDomain>https://auth0url.auth0.com</AppDomain>
<AppDomain>https://localhost</AppDomain>
<AppDomain>https://login.live.com</AppDomain>
<AppDomain>https://login.microsoftonline.com</AppDomain>
<AppDomain>https://my.website.com</AppDomain>
index.html (Opener Html)
<!-- Load the Office JavaScript APIs -->
<script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/Office.js" type="text/javascript"></script>
<script src="index.js"></script>
index.js
// height and width are percentages of the size of the screen.
Office.context.ui.displayDialogAsync(fullUrl, {height: 45, width: 55, displayInIframe: false},
function (asyncResult) {
console.log(asyncResult);
if (asyncResult.status === "failed") {
//Error code 12009 means "user chose to ignore the dialog box"
if (asyncResult.error.code === 12009) {
// Handle failure
} else {
// Do something else
}
} else {
dialog = asyncResult.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, handleToken);
dialog.addEventHandler(Office.EventType.DialogEventReceived, dialogClosing);
}
});
popupRedirect.js (размещается только на моем сайте (аналогично родительскому окну). Этот файл запускает строку json обратно к родителю)
Office.initialize = function() {
$(document).ready(function () {
// Some Code before this and after this not relevent to issue
var messageObject = {outcome: "something"};
// Tell the task pane about the outcome.
Office.context.ui.messageParent(jsonMessage);
...
});
});
Ожидаемые результаты:
«messageParent» должен запускать код, написанный в «handleToken» индекса.js
Фактические результаты (Может или не может быть связано)
appsforoffice.micros…16.01.debug.js:8202 Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('auth0url.auth0.com') does not match the recipient window's origin ('https://my.website.com').
Код, написанный в handleToken
, не срабатывает.
Обратите внимание, что: displayInIframe: true
не работает, так как login.live.com не разрешает iframes.
Используемая среда для тестирования:
Google Chrome 71.0.3578.98 (официальная сборка) (64-разрядная версия) (когорта: стабильная)
Редакция 15234034d19b85dcd9a03b164ae89d04145d8368-refs / Branch-Heads / 3578 @ {# 897}
ОС Windows 10
JavaScript V8 7.1.302.31
Flash 32.0.0.101