Надстройка Outlook: Outlook 2016 проблемы с новым окном проверки подлинности

Я работаю над надстройкой для Microsoft Outlook, и мы столкнулись с проблемой, когда панель задач Outlook 2016 не могла взаимодействовать с новым окном. В настоящее время это происходит только в версии 1810, сборка 10927.20001.

Чтобы воспроизвести проблему в данной версии Outlook:

  1. Запустить новое окно из панели задач (в нашем случае это было окно входа в систему OAuth, перенаправляющее на страницу успешного входа)
  2. Осмотрите окно - похоже, что объект window.opener не определен

Если мы сравним это поведение с более старой версией Outlook, у нас будет доступ к объекту window, объекту window.opener и другим свойствам, определенным в объекте window.opener. Эта проблема начала возникать около 2 недель назад.


person Steve M    schedule 05.10.2018    source источник
comment
Вы рассматривали возможность использования Dialog API для открытия нового окна? Он включает в себя метод обмена сообщениями на панели задач. docs.microsoft.com/en-us/javascript/api/office/   -  person Outlook Add-ins Team - MSFT    schedule 06.10.2018
comment
Да, мы используем Dialog API в другом месте нашего приложения и использовали его для сообщения панели задач. К сожалению, поскольку мы должны перенаправлять пользователя несколько раз внутри этого конкретного окна на OAuth пользователя с нашим приложением, мы построили этот процесс аутентификации без использования Dialog API. Было ли внесено изменение в эту новую сборку Outlook, запрещающее использование объекта window.opener по соображениям безопасности? Мы думали, что это могло быть так, поскольку это работает в предыдущей сборке. Если нет, следует ли ожидать, что наш существующий поток аутентификации с использованием window.opener будет работать, когда эта сборка будет выпущена?   -  person Steve M    schedule 10.10.2018
comment
Начиная с версии 16.0.8110.1000 и более поздних, окна, открытые в window.open, будут открываться в браузере ПО УМОЛЧАНИЮ. (Chrome, Edge и т. Д.). Если вам нужен доступ к этому окну, вызов window.open должен быть в списке AppDomains, а URL-адрес должен быть https.   -  person Outlook Add-ins Team - MSFT    schedule 10.10.2018
comment
Наш домен находится в списке AppDomains, и мы используем https. Мы проверили и подтвердили, что окно открывается в IE. Однако мы по-прежнему не можем получить доступ к window.opener. Есть ли что-нибудь еще, что может помешать нам получить доступ к window.opener?   -  person Steve M    schedule 29.10.2018
comment
Вы должны иметь возможность использовать Dialog API, даже если ваша страница выполняет несколько перенаправлений, если в конце она перенаправляет обратно на страницу, на которой загружен office.js, чтобы иметь возможность отправить сообщение надстройке обратно.   -  person Outlook Add-ins Team - MSFT    schedule 22.11.2018


Ответы (1)


mywindow = window.open("https://contoso/test/blah.html");

mywindow.document.write("foo");

mywindow.opener.document.write("bar");

Этот код будет работать, только если https://contoso/ находится в списке доменов приложений. В противном случае mywindow будет нулевым.

person Outlook Add-ins Team - MSFT    schedule 10.10.2018