Eseguire query in Microsoft Graph usando gli SDK

Completato

Gli SDK di Microsoft Graph sono progettati per semplificare la creazione di applicazioni di qualità elevata, efficienti e resilienti che accedono a Microsoft Graph. Gli SDK includono due componenti: una libreria del servizio e una libreria di base.

La libreria del servizio include modelli e generatori di richieste che vengono creati dai metadati di Microsoft Graph per fornire un'esperienza avanzata e individuabile.

La libreria di base offre un set di funzionalità che migliorano l'uso di tutti i servizi di Microsoft Graph. Il supporto incorporato per la gestione dei tentativi, i reindirizzamenti sicuri, l'autenticazione trasparente e la compressione dei payload, che migliorano la qualità delle interazioni dell'applicazione con Microsoft Graph, senza complessità aggiuntiva assicurando al contempo il controllo completo. La libreria di base offre anche il supporto per attività comuni, ad esempio il paging tra raccolte e la creazione di richieste batch.

In questa unità verranno illustrati gli SDK disponibili e mostrati alcuni esempi di codice per alcune delle operazioni più comuni.

Installare l'SDK .NET di Microsoft Graph

L'l'SDK .NET di Microsoft Graph è incluso nei pacchetti di NuGet seguenti:

  • Microsoft. Graph: contiene i modelli e i generatori di richieste per l'accesso all'endpoint v1.0 con l'API Fluent. Microsoft.Graph ha una dipendenza da Microsoft.Graph.Core.
  • Microsoft.Graph.Beta: contiene i modelli e i generatori di richieste per l'accesso all'endpoint beta con l'API Fluent. Microsoft.Graph.Beta ha una dipendenza da Microsoft.Graph.Core.
  • Microsoft.Graph.Core: libreria di base per effettuare chiamate a Microsoft Graph.

Creare un client Microsoft Graph

Il client Microsoft Graph è progettato per semplificare le chiamate a Microsoft Graph. È possibile usare una singola istanza del client per la durata dell'applicazione. Il codice di esempio seguente illustra come creare un'istanza di un client Microsoft Graph. Il provider di autenticazione gestisce l'acquisizione dei token di accesso per l'applicazione. I vari provider dell'applicazione supportano scenari client diversi. Per informazioni dettagliate su quali provider e opzioni sono appropriati per lo scenario, vedere Scegliere un provider di autenticazione.

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

Leggere le informazioni tramite Microsoft Graph

Per leggere informazioni da Microsoft Graph, è prima necessario creare un oggetto request e quindi eseguire il metodo GET nella richiesta.

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

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

Recuperare un elenco di entità

Il recupero di un elenco di entità è simile al recupero di una singola entità, ad eccezione di una serie di altre opzioni per la configurazione della richiesta. Il parametro di query $filter può essere usato per limitare il set di risultati solo alle righe che corrispondono alla condizione specificata. Il parametro di query $orderBy richiederà al server di fornire l'elenco di entità ordinate in base alle proprietà specificate.

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

Eliminazione di un'entità

Le richieste di eliminazione vengono create nello stesso modo delle richieste di recupero di un'entità, ma usano una richiesta DELETE anziché GET.

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

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

Creazione di una nuova entità

Per gli SDK che supportano uno stile Fluent, è possibile aggiungere nuovi elementi alle raccolte con un metodo Add. Per gli SDK basati su modello, l'oggetto request espone un metodo 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);

Altre risorse