Доступ к информации о современных группах O365 из надстройки VSTO Outlook

#outlook #microsoft-graph-api #office365 #single-sign-on #vsto

#outlook #microsoft-graph-api #office365 #единый вход #vsto

Вопрос:

Я хочу создать надстройку для настольного приложения MS Outlook 2019 (-> Надстройка VSTO). Он предназначен для сбора некоторой информации из современных групп O365, членом которых является текущий пользователь Outlook (me). Насколько я понимаю, единственный способ добиться этого — использовать Microsoft Graph API, поскольку нет поддержки для доступа к вещам, связанным с O365, через объектную модель Outlook / Office Interop. Учитывая это (и, пожалуйста, поправьте меня, если я ошибаюсь) Я мог бы использовать Microsoft.Графические пакеты Nuget. С их помощью я хотел бы вызвать следующую конечную точку:

 POST /users/{id | userPrincipalName}/getMemberGroups
 

возможно на C # с помощью этого фрагмента кода:

 GraphServiceClient graphClient = new GraphServiceClient(authProvider);

var securityEnabledOnly = true;

await graphClient.Me
    .GetMemberGroups(securityEnabledOnly)
    .Request()
    .PostAsync();
 

Мой вопрос: есть ли способ использовать существующие учетные данные Outlook для AuthProvider, чтобы мне не нужно было вводить учетные данные пользователя?
Я читал, что веб-надстройки имеют возможность использовать различные потоки аутентификации, включая поток единого входа. Но это не подходит для VSTO.

Я подумал об интегрированном windowsauthenticationprovider. Но поэтому мне нужно указать идентификатор клиента, которого у меня нет. Означает ли это в конечном итоге, что мне нужно каким-то образом зарегистрировать свою надстройку? Разве я не могу просто написать надстройку для своих личных целей без поддержки администратора?

 IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
            .Create(clientId)
            .WithTenantId(tenantID)
            .Build();

IntegratedWindowsAuthenticationProvider authProvider = new IntegratedWindowsAuthenticationProvider(publicClientApplication, scopes);
 

Комментарии:

1. Почему вы хотите использовать устаревшие надстройки Outlook VSTO? Скорее я бы посоветовал вам использовать Office.js и создайте надстройки Outlook. Вот ссылка — docs.microsoft.com/en-us/office/dev/add-ins/outlook/apis

2. Используя это, вы также можете авторизоваться в Microsoft Graph с помощью единого входа. вот документ — docs.microsoft.com/en-us/office/dev/add-ins/develop /…

3. Привет, разработчик, спасибо за ваше предложение. Но я застрял в использовании настольного клиента по нескольким причинам. 🙁

4. Будучи устаревшей технологией, такой как VSTO, может не иметь встроенных интеграций с Graph API. Как говорится, вы все еще можете это сделать, технически вы можете использовать HttpClient (посмотрите, можете ли вы использовать Microsoft Graph SDK) как часть вашей реализации, но вы можете столкнуться с проблемами при попытке внедрения материалов, связанных с SSO (отсюда и рекомендуемые веб-ссылки), поэтому просто делитесь этим с максимальной эффективностью для васчтобы попробовать. Вы начинаете, как здесь: » docs.microsoft.com/en-us/samples/azure-samples /… «. Дайте мне знать, как это происходит.

5. Вы можете следовать приведенному выше образцу, в нем есть подробные шаги. Чтобы получить доступ к Microsoft Graph, сначала вам необходимо зарегистрировать свое приложение в Azure AD, получить токен с соответствующей областью действия / разрешением, чтобы вы могли использовать защищенный ресурс, такой как Microsoft Graph.