Веб-надстройка Outlook, вызывающая Microsoft Graph - PullRequest
1 голос
/ 15 марта 2019

Я следую office-js-helpers , чтобы включить единый вход, а затем использовать токен доступа для вызова Graph API.

Но, Аутентификация откроет окна входа в новую вкладку, даже если я добавил в manifest.xml

<AppDomain>https://login.windows.net</AppDomain>
<AppDomain>https://login.microsoftonline.com</AppDomain>

Текущий результат.
enter image description here

Edit:
Для входа в систему единого входа следует перенаправить его в надстройку Outlook вместо открытия нового окна веб-браузера?

Вот демонстрационный проект OutlookOneDriveGraphAddIn .

Я хочу включить graph api в своем веб-модуле Outlook, для Graph api потребуется процесс входа в систему, я хочу иметь возможность запрашивать токен доступа в моем веб-модуле.

Если что-то неясно, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Здесь есть 2 вопроса.

Вопрос № 1: Для входа в систему единого входа следует перенаправить его в надстройку Outlook вместо открытия нового окна веб-браузера?

Его не следует перенаправлять в надстройке Office по той простой причине, что это против OAuth.При аутентификации OAuth вам нужно будет показать пользователю URL-адрес - в противном случае вы можете подделать пользовательский интерфейс, который выглядит как логин Microsoft в вашей надстройке, и украсть учетные данные людей.Очевидно, что это не безопасно.Поэтому вместо вызова getAccessTokenAsync должно появиться диалоговое окно, если пользователь не вошел в систему. Вход в систему обрабатывается Microsoft, после чего токен становится доступным с помощью того же метода getAccessTokenAsync. * 1009.*

Вопрос № 2: Как получить токен доступа из моей надстройки?

См. Документацию здесь: https://docs.microsoft.com/en-us/office/dev/add-ins/develop/sso-in-office-add-ins#add-client-side-code

Office.context.auth.getAccessTokenAsync(function (result) {
    if (result.status === "succeeded") {
        // Use this token to call Web API
        var ssoToken = result.value;
        ...
    } else {
        if (result.error.code === 13003) {
            // SSO is not supported for domain user accounts, only
            // work or school (Office 365) or Microsoft Account IDs.
        } else {
            // Handle error
        }
    }
});
0 голосов
/ 20 марта 2019

Эй, я прошел через ту же проблему.Я также работал над надстройкой Outlook, которой требовался токен доступа для запроса ресурсов из GraphAPI.После долгих часов поиска я нашел лучший из возможных методов и завершил реализацию своего Addin.

Попробуйте выполнить шаги в Токен доступа без пользователя .Я использовал промежуточное программное обеспечение nodejs для аутентификации и его работы.Теперь я могу получить доступ к большинству ресурсов GraphApi, используя это.Надеюсь, это поможет.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...