Consulta de Microsoft Graph mediante los SDK

Completado

Los SDK de Microsoft Graph se han diseñado para simplificar la compilación de aplicaciones de alta calidad, eficaces y resistentes que acceden a Microsoft Graph. Los SDK incluyen dos componentes: una biblioteca de servicios y una biblioteca principal.

La biblioteca de servicios contiene modelos y generadores de solicitudes que se generan a partir de metadatos de Microsoft Graph para proporcionar una experiencia rica y reconocible.

La biblioteca principal proporciona un conjunto de características que mejoran el trabajo con todos los servicios de Microsoft Graph. La compatibilidad integrada con el control de reintentos, las redirecciones seguras, la autenticación transparente y la compresión de carga útil mejoran la calidad de las interacciones de la aplicación con Microsoft Graph, sin complejidad adicional, a la vez que le otorga completamente el control. La biblioteca principal también proporciona compatibilidad con tareas comunes, como la paginación de colecciones y la creación de solicitudes por lotes.

En esta unidad, conocerá los SDK disponibles y verá algunos ejemplos de código de algunas de las operaciones más comunes.

Instalación del SDK de .NET de Microsoft Graph

El SDK de .NET de Microsoft Graph se incluye en los siguientes paquetes NuGet:

  • Microsoft.Graph: contiene los modelos y los generadores de solicitudes para acceder al punto de conexión v1.0 con la API fluida. Microsoft.Graph tiene una dependencia en Microsoft.Graph.Core.
  • Microsoft.Graph.Beta: contiene los modelos y los generadores de solicitudes para acceder al punto de conexión beta con la API fluida. Microsoft.Graph.Beta tiene una dependencia en Microsoft.Graph.Core.
  • Microsoft.Graph.Core: la biblioteca principal para realizar llamadas a Microsoft Graph.

Creación de un cliente de Microsoft Graph

El cliente de Microsoft Graph está diseñado para facilitar la realización de llamadas a Microsoft Graph. Puede usar una única instancia de cliente durante la vigencia de la aplicación. En los ejemplos de código siguientes se muestra cómo crear una instancia de un cliente de Microsoft Graph. El proveedor de autenticación controla la adquisición de tokens de acceso para la aplicación. Los distintos proveedores de aplicaciones admiten distintos escenarios de cliente. Para más información sobre qué proveedor y opciones son adecuadas para su escenario, consulte Selección de un proveedor de autenticación.

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);

Lectura de información de Microsoft Graph

Para leer información de Microsoft Graph, primero debe crear un objeto de solicitud y, luego, ejecutar el método GET en la solicitud.

// GET https://graph.microsoft.com/v1.0/me

var user = await graphClient.Me
    .GetAsync();

Recuperación de una lista de entidades

Recuperar una lista de entidades es similar a recuperar una sola entidad, salvo que hay otras opciones para configurar la solicitud. El parámetro de consulta $filter se puede usar para reducir el conjunto de resultados a solo aquellas filas que coincidan con la condición proporcionada. El parámetro de consulta $orderBy solicita que el servidor proporcione la lista de entidades ordenadas por las propiedades especificadas.

// GET https://graph.microsoft.com/v1.0/me/messages?$select=subject,sender&$filter=<some condition>&orderBy=receivedDateTime

var messages = await graphClient.Me.Messages
    .Request()
    .Select(m => new {
        m.Subject,
        m.Sender
    })
    .Filter("<filter condition>")
    .OrderBy("receivedDateTime")
    .GetAsync();

Eliminación de una entidad

Las solicitudes de eliminación se construyen de la misma manera que las solicitudes para recuperar una entidad, pero usan una solicitud DELETE en lugar de GET.

// DELETE https://graph.microsoft.com/v1.0/me/messages/{message-id}

string messageId = "AQMkAGUy...";
var message = await graphClient.Me.Messages[messageId]
    .Request()
    .DeleteAsync();

Creación de una entidad

En el caso de los SDK que admiten un estilo fluido, se pueden agregar nuevos elementos a colecciones con un método Add. En el caso de los SDK basados en plantillas, el objeto de solicitud expone un método post.

// POST https://graph.microsoft.com/v1.0/me/calendars

var calendar = new Calendar
{
    Name = "Volunteer"
};

var newCalendar = await graphClient.Me.Calendars
    .Request()
    .AddAsync(calendar);

Otros recursos