Fråga Microsoft Graph med hjälp av SDK:er

Slutförd

Microsoft Graph SDK:er är utformade för att förenkla skapandet av högkvalitativa, effektiva och motståndskraftiga program som har åtkomst till Microsoft Graph. SDK:erna innehåller två komponenter: ett tjänstbibliotek och ett kärnbibliotek.

Tjänstbiblioteket innehåller modeller och byggare för begäranden som genereras från Microsoft Graph-metadata för att ge en omfattande och identifierbar upplevelse.

Kärnbiblioteket innehåller en uppsättning funktioner som förbättrar arbetet med alla Microsoft Graph-tjänster. Inbäddat stöd för återförsökshantering, säkra omdirigeringar, transparent autentisering och nyttolastkomprimering, förbättra kvaliteten på programmets interaktioner med Microsoft Graph, utan extra komplexitet, samtidigt som du får fullständig kontroll. Kärnbiblioteket har också stöd för vanliga uppgifter, till exempel växling via samlingar och skapande av batchbegäranden.

I den här lektionen får du lära dig mer om tillgängliga SDK:er och se några kodexempel på några av de vanligaste åtgärderna.

Kommentar

Kodexemplen i den här lektionen baseras på version 5.65 av Microsoft Graph .NET SDK.

Installera Microsoft Graph .NET SDK

Microsoft Graph .NET SDK ingår i följande NuGet-paket:

  • Microsoft.Graph – innehåller modeller och begärandebyggare för åtkomst till slutpunkten med det flytande API:et. Microsoft.Graph har ett beroende av Microsoft.Graph.Core.
  • Microsoft.Graph.Beta – innehåller modeller och begärandebyggare för att få åtkomst till beta-slutpunkten med det flytande API:et. Microsoft.Graph.Beta har ett beroende av Microsoft.Graph.Core.
  • Microsoft.Graph.Core – kärnbiblioteket för att göra anrop till Microsoft Graph.

Skapa en Microsoft Graph-klient

Microsoft Graph-klienten är utformad för att göra det enkelt att göra anrop till Microsoft Graph. Du kan använda en enskild klientinstans under programmets livslängd. Följande kodexempel visar hur du skapar en instans av en Microsoft Graph-klient. Autentiseringsprovidern hanterar anskaffning av åtkomsttoken för programmet. De olika programleverantörerna stöder olika klientscenarier. Mer information om vilken provider och vilka alternativ som är lämpliga för ditt scenario finns i Välj en autentiseringsprovider.

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

Läs information från Microsoft Graph

Om du vill läsa information från Microsoft Graph måste du först skapa ett begärandeobjekt och sedan köra GET metoden på begäran.

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

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

Hämta en lista över entiteter

Att hämta en lista över entiteter liknar att hämta en enskild entitet, förutom att det finns andra alternativ för att konfigurera begäran. Frågeparametern $filter kan användas för att minska resultatuppsättningen till endast de rader som matchar det angivna villkoret. Frågeparametern $orderBy begär att servern tillhandahåller listan över entiteter sorterade efter de angivna egenskaperna.

// 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'";
    });

Ta bort en entitet

Borttagningsbegäranden konstrueras på samma sätt som begäranden om att hämta en entitet, men använder en DELETE begäran i stället för en 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();

Skapa en ny entitet

För fluent-formatmallar och mallbaserade SDK:er kan nya objekt läggas till i samlingar med en POST metod.

// POST https://graph.microsoft.com/v1.0/me/calendars
var calendar = new Calendar
{
    Name = "Volunteer",
};

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

Andra resurser