Объект Word не определен в надстройке Office 2016 после перенаправления входа

Я пытаюсь добавить слово, которое сначала должно перенаправить на страницу входа после начальной загрузки, а после входа в систему перенаправляет обратно на надстройку. Надстройка размещается на собственном веб-сервере. Однако после перенаправления я получаю сообщение об ошибке «Слово не определено». Надстройка выполняется внутри Word, и у меня есть вызовы Office.initialize и Word.run. Если я запускаю надстройку так, чтобы она указывала на localhost, а не на веб-сервер для надстройки, она работает нормально, но когда она запускается с веб-сервера, я получаю ошибки.

Вот как выглядит мой код для страницы, на которой возникает ошибка:

(function () {
"use strict";

Office.initialize = function (reason) {
    $(document).ready(function () {

        try {
            doSomethingInWord();
        } catch (e) {
            console.log(e);
        }
    }
}
})();

Моя функция "doSomethingInWord" выглядит так:

function doSomethingInWord() {
    Word.run(function (context) {
        var body = context.document.body;

        return context.sync()
            .then(function () {
                    body.clear();
                    return context.sync().then(function () {
                        console.log('Did Something in word');
                    })
        }).catch(errorHandler);
    }
}

person ChosunOne    schedule 20.07.2016    source источник
comment
Выполнение Office.context.requirements.isSetSupported ('WordApi', 1.1) возвращает значение true.   -  person ChosunOne    schedule 20.07.2016
comment
Хорошо, эта ошибка, похоже, возникает только тогда, когда я запускаю надстройку из Visual Studio. Запуск просто на словах, кажется, работает без проблем.   -  person ChosunOne    schedule 20.07.2016
comment
Не могли бы вы подробнее рассказать об этой службе входа в систему? Перенаправляется ли он на другую страницу, а затем возвращается на эту? Как он узнает, что нужно вернуться к этому (параметр запроса или браузер)? Служба работает в том же домене? ...   -  person Michael Zlatkovsky - Microsoft    schedule 20.07.2016
comment
Конечно, он перенаправляется со страницы надстройки в федеративный орган для входа в систему с использованием OAuth, а затем перенаправляется обратно на страницу надстройки с некоторыми параметрами запроса, которые я передаю на сервер надстройки для доступа к ограниченному контенту. Страница входа находится в другом домене.   -  person ChosunOne    schedule 20.07.2016


Ответы (1)


Я думаю, что проблема, которую вы видите, заключается в том, что при перенаправлении в диалоговое окно аутентификации и обратно вы каким-то образом не запускаете Office.js повторно.

Я удивлен, что вы сказали, что это работает для вас в Word без Visual Studio - я не знаю, как они будут связаны. Но в любом случае, я думаю, вы столкнетесь с другими проблемами в этом потоке, особенно в Excel Online, где надстройка запускается в iframe (и где диалоговые окна OAuth, как правило, не позволяют находиться в iframes).

Я думаю, что лучше всего будет загрузить надстройку «в обычном режиме» и использовать Office.context.ui.displayDialogAsync API для отображения входа в систему OAuth в отдельном диалоговом окне. В это время ваша надстройка должна показывать «ожидание ввода диалогового окна для входа в систему». Затем верните диалоговое сообщение родителю после завершения входа в систему OAuth, передав любую необходимую информацию (токен или еще много чего).

person Michael Zlatkovsky - Microsoft    schedule 20.07.2016