Я использую Dialog API и Office.context.ui.displayDialogAsync () в моей надстройке React + Typescript Outlook для реализации специального потока входа в систему.Пользователь должен сначала пройти аутентификацию в Office 365, затем мы используем токены OAuth с внутренним API для входа в систему с помощью AzureADFS, чтобы получить дополнительные токены для другого API, из которого надстройка получает данные.Все прекрасно работает в Outlook Online на Chrome и Firefox, а также на рабочем столе Outlook.Но в Edge и IE диалог никогда не закрывается, и я не получаю токены авторизации.
ПРИМЕЧАНИЕ. Моя реализация входа в систему основана на следующем примере: https://github.com/OfficeDev/Office-Add-in-Dialog-API-Simple-Example/blob/master/SimpleDialogSampleWeb/DialogHelper.js
собрал воедино грубое извлечение кода для моего процесса входа из надстройки здесь: https://stackblitz.com/edit/office-js-dialog-api (очевидно, что его нельзя запустить без приложения хоста Office)
Основной поток:
.Это две похожие, но разные проблемы, когда Edge и IE размещают надстройку:
1) Edge: обратный вызов dialogMessageReceivedHandler передается Dialog.addEventHandler в функции dialogCallback, которая запускается после Office.context.ui.displayDialogAsync не получает удар .Значение asyncResult является «преуспевающим» в функции dialogCallback, поэтому ошибки нет.Страница «Переход на страницу входа в вашу организацию» просто вращается, а вторая страница AZADFS не загружается
2) IE: страница входа в O365 успешно перенаправляет на вторую страницу входа AZADFS, поэтому пользователь можетвведите их кредиты AD.Однако после того, как они отправили свои учетные данные, dialogEventReceivedHandler запускается и возвращается 12006 - что означает, что пользователь отменил вход в систему, но это, конечно, не так - это ввод / отправка / ОК или что-то еще.Таким образом, та же проблема: обратный вызов dialogMessageReceivedHandler не попадает.
Что здесь происходит?Есть ли что-то несовместимое с Dialog API в Edge и IE?Или в моей реализации есть ошибка, которая каким-то чудесным образом работает только в Chrome и Firefox?