Как получить рабочий Dialog API OfficeJS API с настольным клиентом Outlook 2016

Я разработал надстройку Outlook, которая использует API OfficeJS и хочу реализовать OAuth в приложении, а также Документация API говорит, что Outlook 2016 (Desktop) поддерживает набор требований 1.1, 1.2, 1.3 и 1.4, но в моем случае он молчит, даже не выдает ошибку. Во время работы образец API диалога для надстройки Word я получаю Ошибка выполнения JavaScript: Unable to get property 'displayDialogAsync' of undefined or null reference.

Я использую Microsoft Office Professional Plus 2016.

Код, который я написал для запуска диалогового окна, приведен ниже:

dialogTest() {
        const url = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=....";
        Office.context.ui.displayDialogAsync(url, { width: 15, height: 27, requireHTTPS: true }, function (asyncResult) {
            if (asyncResult.status !== Office.AsyncResultStatus.Succeeded) {
                // TODO: Handle error.
                return;
            }

            // Get the dialog and register event handlers.
            var dialog = asyncResult.value;
            dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, function (asyncResult) {
                if (asyncResult.type !== Microsoft.Office.WebExtension.EventType.DialogMessageReceived) {
                    // TODO: Handle unknown message.
                    return;
                }

                // Parse the message.
                var data = JSON.parse(asyncResult.message);
                console.log('Hello #Office365Dev', data.name);

                // TODO: Do something with the data.

                // We got our data, time to close the dialog.
                dialog.close();
            });
        });
    }

person Hitendra    schedule 21.12.2016    source источник


Ответы (1)


Похоже, что ui член Office.context не определен или Office.js загружен неправильно. Попробуйте сначала просмотреть их:

  • Правильно ли загружен Office.js javascript?
  • Хорошо ли настроен и выполняется обратный вызов Office.initialize до того, как вы это сделаете что-то?
  • Какая у вас версия Outlook Desktop 2016?

Изменить: обсуждение с инженером Microsoft в июне 2016 года (это не официальное заявление). Поддерживаемые сборки для dialogAPI - Office для рабочего стола Windows 2016 (сборка 16.0.6741.0000 или выше). Это может измениться.

  • Каков результат этого фрагмента кода var result = Office.context.requirements.isSetSupported('DialogAPI', '1.4');
person Benoit Patra    schedule 21.12.2016
comment
Office JS загружен правильно, а обратный вызов Office.initialize был выполнен правильно, потому что все остальные операции выполняются без изменений. Я вызываю функцию dialogTest() нажатием кнопки. Моя настольная версия для офиса: Word 2016 MSO (16.0.4266.1001) Я установил Office Professional Plus 2016 через ISO, загруженный с официальной страницы загрузки Microsoft. - person Hitendra; 21.12.2016
comment
var result = Office.context.requirements.isSetSupported('DialogAPI', '1.1'); давая false - person Hitendra; 21.12.2016
comment
Я думаю, что ваша версия Office слишком старая и не содержит последних изменений, включая dialogAPI (см. Мой обновленный ответ). Я думаю, вам следует установить с помощью Click To Run, чтобы получить все новейшие функции. - person Benoit Patra; 21.12.2016
comment
Да вы правы обновленная офисная версия, сейчас заработала. Спасибо за ваши комментарии :) - person Hitendra; 22.12.2016
comment
Кто-нибудь может мне в этом помочь? stackoverflow.com/questions/42950678/ - person Khawaja Asim; 22.03.2017
comment
@BenoitPatra Работает ли этот Dialog API в Internet Explorer 11? вход в веб-надстройку в IE и на рабочем столе не работает - person Gopal Zadafiya; 01.10.2019