Если я не копирую _host_Info, я получаю «предупреждение, что office.js загружен вне офисного клиента» во всплывающем диалоговом окне в IE и Edge.
Я использую поток аутентификации службы посредника. Он отлично работает на клиентах Firefox, Chrome и Word Desktop, даже без _host_Info.
Когда я копирую _host_Info, диалоговое окно автоматически закрывается при последнем перенаправлении обратно в надстройку.
Шаги:
- Триггер Office.context.ui.displayDialogAsync, расположение надстройки с запросом redirectb64, содержащим URL-адрес внешнего входа в mvc с перенаправлением uri обратно в надстройку.
- Снова открыть надстройку, проверить, если redirectb64существовать и декодировать его обратно в URL
- из местоположения окна, мы скопируем информацию хоста в URL перенаправления
- , перенаправленный в приложение mvc, которое вызывает провайдера входа в систему, а затем обратно в приложение mvc для подписи-в и после перенаправления обратно в надстройку с токеном доступа и другими параметрами запроса.
Из обработчика событий диалога я получаю сообщение об ошибке закрытия диалога.
Код:
/* Render application after Office initializes */
Office.initialize = async () => {
let redirectUrl:string = window.atob(UrlHelper.getUrlParameter("redirectb64"));
if(redirectUrl !== "") {
console.log("DialogUrl",window.location);
console.log("Redirectb64 (atob)",redirectUrl);
//Must copy over this to the redirectUri;
let hostInfo:string = encodeURIComponent("&_host_Info=" + UrlHelper.getUrlParameter("_host_Info"));
redirectUrl = StringHelper.insert(redirectUrl.indexOf("&state="),redirectUrl,hostInfo);
console.log("Redirectb64 (atob) with hostInfo",redirectUrl);
window.location.href = redirectUrl;
return;
}
var response:AxiosResponse = await axios.get("assets/appconfig.json");
console.log("config loaded.", response.data);
AuthHelper.SetAccessToken();
//console.log("AuthHelper.SetAccessToken", typeof AuthHelper.SetAccessToken);
const myLanguage: string = Office.context.displayLanguage;
render(App,myLanguage, true, response.data);
};
Кажется, что диалоговое окно api потеряло связь с диалогом после обратного вызова login.microsoft.com к приложению mvcп. Почему?