Запрос Microsoft Graph через пакеты SDK
Пакеты SDK для Microsoft Graph предназначены для оптимизации создания высококачественных, эффективных и отказоустойчивых приложений, использующих доступ к Microsoft Graph. Пакеты SDK включают два компонента: библиотеку служб и базовую библиотеку.
Библиотека служб содержит модели и построители запросов, созданные из метаданных Microsoft Graph, чтобы обеспечить широкий и доступный для обнаружения интерфейс.
Базовая библиотека предоставляет набор функций, улучшающих работу со всеми службами Microsoft Graph. Встроенная поддержка повторных попыток, безопасного перенаправления, прозрачной проверки подлинности и сжатия полезных данных улучшает качество взаимодействия приложения с Microsoft Graph, не добавляя никаких сложностей и сохраняя полный контроль. Базовая библиотека также обеспечивает поддержку общих задач, таких как просмотр коллекций и создание пакетных запросов.
В этом уроке вы узнаете о доступных пакетах SDK и просмотрите некоторые примеры кода некоторых наиболее распространенных операций.
Примечание.
Примеры кода в этом уроке основаны на версии 5.65 пакета SDK для Microsoft Graph .NET.
Установка пакета SDK .NET для Microsoft Graph
Пакет SDK .NET для Microsoft Graph включается в следующие пакеты NuGet:
-
Microsoft.Graph — содержит модели и построители запросов для доступа к конечной
v1.0точке с помощью свободного API.Microsoft.Graphимеет зависимость отMicrosoft.Graph.Core. -
Microsoft.Graph.Beta — содержит модели и построители запросов для доступа к
betaконечной точке с помощью свободного API.Microsoft.Graph.Betaимеет зависимость отMicrosoft.Graph.Core. - Microsoft.Graph.Core — основная библиотека для вызова Microsoft Graph.
Создание клиента Microsoft Graph
Клиент Microsoft Graph предназначен для упрощения вызовов к Microsoft Graph. В течение всего времени существования приложения можно использовать один экземпляр клиента. В следующем примере кода показано, как создать экземпляр клиента Microsoft Graph. Поставщик проверки подлинности обрабатывает получение маркеров доступа для приложения. Разные поставщики приложений поддерживают разные клиентские сценарии. Дополнительные сведения о том, какой поставщик и параметры подходят для вашего сценария, см. в разделе "Выбор поставщика проверки подлинности".
var scopes = new[] { "User.Read" };
// Multi-tenant apps can use "common",
// single-tenant apps must use the tenant ID from the Azure portal
var tenantId = "common";
// Value from app registration
var clientId = "YOUR_CLIENT_ID";
// using Azure.Identity;
var options = new TokenCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
// Callback function that receives the user prompt
// Prompt contains the generated device code that you must
// enter during the auth process in the browser
Func<DeviceCodeInfo, CancellationToken, Task> callback = (code, cancellation) => {
Console.WriteLine(code.Message);
return Task.FromResult(0);
};
// /dotnet/api/azure.identity.devicecodecredential
var deviceCodeCredential = new DeviceCodeCredential(
callback, tenantId, clientId, options);
var graphClient = new GraphServiceClient(deviceCodeCredential, scopes);
Чтение сведений из Microsoft Graph
Чтобы прочитать сведения из Microsoft Graph, сначала необходимо создать объект запроса, а затем запустить GET метод в запросе.
// GET https://graph.microsoft.com/v1.0/me
var user = await graphClient.Me
.GetAsync();
Получение списка сущностей
Получение списка сущностей аналогично получению одной сущности, за исключением других вариантов настройки запроса. Параметр запроса $filter можно использовать для сокращения результирующего набора, чтобы включить в него только соответствующие указанному условию строки. Параметр $orderBy запроса запрашивает, что сервер предоставляет список сущностей, отсортированных по указанным свойствам.
// GET https://graph.microsoft.com/v1.0/me/messages?
// $select=subject,sender&$filter=subject eq 'Hello world'
var messages = await graphClient.Me.Messages
.GetAsync(requestConfig =>
{
requestConfig.QueryParameters.Select =
["subject", "sender"];
requestConfig.QueryParameters.Filter =
"subject eq 'Hello world'";
});
Удаление сущности
Запросы на удаление создаются так же, как запросы на получение сущности, но с запросом DELETE вместо GET.
// DELETE https://graph.microsoft.com/v1.0/me/messages/{message-id}
// messageId is a string containing the id property of the message
await graphClient.Me.Messages[messageId]
.DeleteAsync();
Создание сущности
Для свободного стиля и пакетов SDK на основе шаблонов новые элементы можно добавлять в коллекции с POST помощью метода.
// POST https://graph.microsoft.com/v1.0/me/calendars
var calendar = new Calendar
{
Name = "Volunteer",
};
var newCalendar = await graphClient.Me.Calendars
.PostAsync(calendar);