Используя Microsoft Graph самым простым способом найти электронную почту - PullRequest
0 голосов
/ 17 января 2020

У меня есть проект автоматизации (.NET Framework), который в настоящее время использует Microsoft.Exchange.WebServices для простого выполнения простых задач, таких как поиск электронной почты в удаленной папке входящих сообщений или папке, проверка вложений и т. Д. c. Мы получаем данные из учетной записи электронной почты организации по адресу: outlook.office365.com

Недавно я начал переписывать свой проект в .NET Core, и это вызвало ряд проблем, включая мое дальнейшее использование EWS:

Сегодня мы рассказываем о наших планах отойти от доступа Basi c для аутентификации EWS в течение следующих двух лет, при этом поддержка прекращается окт. 13, 2020 .

https://techcommunity.microsoft.com/t5/exchange-team-blog/upcoming-changes-to-exchange-web-services-ews-api-for-office-365/ba-p/608055

Microsoft Graph - это рекомендуемый API для доступа к данным Exchange Online. Новые приложения, предназначенные для доступа к данным Exchange Online, должны использовать Microsoft Graph. Поддержка

EWS также кажется низкой в ​​пределах .NET Core различных предупреждений, появившихся в проекте после установки.

Все мои текущая работа с EWS выполняется в классе с парой переменных среды, передаваемых для установки WebCredentials et c. но, как я прочитал ряд статей Microsoft (в том числе: Получить доступ без пользователя ), я понял, что больше ничего не будет просто :) по использованию Graph я не нашел простых примеров кода как реализовать эту чисто внутреннюю интеграцию в почтовый ящик самым простым способом.

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

1 Ответ

0 голосов
/ 17 января 2020

Вот пример консоли net core 2.1

Имеются разрешения для делегирования и приложения. Delegated - это всплывающее окно, требующее пользователя, приложение выполняется через субъект-службу (и может быть сделано неинтерактивно / автоматически).

Шаг 2 в приведенном выше примере использует разрешение User.Read.All. Это дает вам адрес электронной почты, а также кучу другой информации о ваших пользователях. Это слишком излишне, если вам просто нужна электронная почта. User.ReadBasic.All - гораздо лучшее разрешение для регистрации приложения для ваших целей. (Пример должен работать, если вы измените разрешения на User.ReadBasic.All)

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

GraphServiceClient graphClient = GetAuthenticatedGraphClient(config);
List<QueryOption> options = new List<QueryOption>
{
    new QueryOption("$top", "1")
};

var graphResult = graphClient.Users.Request(options).GetAsync().Result;
Console.WriteLine("Graph SDK Result");
Console.WriteLine(graphResult[0].DisplayName);

Graph и MSAL на первый взгляд могут показаться сложными, но они очень ценны. Microsoft регулярно добавляет функциональность (и функции) в график. График 1.0 Документы

...