В надстройках Office365 Desktop файл office.js не загружается в html, который открывается в диалоге - PullRequest
0 голосов
/ 05 июля 2019

В онлайн-надстройках Office365 я могу достичь единого входа Но когда я пытаюсь сделать то же самое в настольном приложении Offline Office365, я сталкиваюсь с проблемой, потому что я не могу загрузить файл js на HTML-странице, которая открыта в диалоге надстройки Office365

Office.context.ui.displayDialogAsync(
    `${window.location.origin}/o365-redirect`, {
        height: 30,
        width: 30
    },
    asyncResult => {
        dialog = asyncResult.value;
        `enter code here`
        dialog.addEventHandler(
            Microsoft.Office.WebExtension.EventType.DialogMessageReceived,
            processMessage
        );
        setTimeout(() => {
            if (!getResults && dialog) {
                dialog.close();
                this.setState({
                    showSSOError: true
                });
            }
        }, 30000);
    }
);

Ниже приведен HTML-код, отображаемый в диалоговом окне, которое открывается с использованием вышеуказанного кода.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <style>
        p {
            width: 100%;
            text-align: center;
        }
    </style>
</head>

<body>

    <div>
        <p class="ms-font-m" id="info">Please wait for this window to close, before continuing with the add-in.</p>
    </div>

    <script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>
    <script type="text/javascript">
        Office.initialize = () => {
            const ssoLink = localStorage.getItem("ssoLink");

            if (ssoLink) {
                localStorage.removeItem("ssoLink");
                document.location.href = `${ssoLink}`;
            } else {
                let messageObject = {};
                let link = document.location.search.substring(1).split('&');

                link.forEach(el => {
                    let param = el.split('=');
                    messageObject[param[0]] = param[1]
                });
                let jsonMessage = JSON.stringify(messageObject);
                Office.context.ui.messageParent(jsonMessage);
            }
        }
    </script>
</body>

</html>

Файл JS прекрасно загружается, когда я открываю свою надстройку в Интернете Office365, но не удается загрузить, когда я использую эту надстройку в настольном приложении Office365.

Пожалуйста, помогите мне, ребята, здесь заблокированы.

1 Ответ

0 голосов
/ 09 июля 2019

Некоторые важные биты для чтения

Надстройки Office защищены средой выполнения надстроек, модель многоуровневых разрешений и регуляторы производительности. это Framework защищает пользовательский опыт следующими способами:

  1. Управление доступом к фрейму пользовательского интерфейса хост-приложения.

  2. Разрешен только косвенный доступ к потоку пользовательского интерфейса хост-приложения.

  3. Модальные взаимодействия не разрешены - например, вызовы JavaScript, функции подтверждения и подтверждения не разрешены, потому что они модальные .

см. Официальную ссылку ниже

https://docs.microsoft.com/en-us/office/dev/add-ins/concepts/privacy-and-security

Вы получите сообщение об ошибке, если перенаправляете внутри панели задач

enter image description here

Вы можете повторить это разными способами

  1. Выберите фреймворк, такой как Angular, React, используя офис Yeoman Generator. Ссылка ниже

https://docs.microsoft.com/en-us/office/dev/add-ins/quickstarts/project-quickstart

  1. Вместо диалога используйте вкладки или новый компонент, который может перенаправить и получить токен.

  2. иногда карты или аккордеон помогут вам достичь этого.

Выше показано, как я успешно выполнил некоторые веб-надстройки. Надеюсь, что это поможет вам и даст вам четкое представление о том, как действовать дальше.

...