Запрос 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);

Другие ресурсы