Abfragen von Microsoft Graph mithilfe von SDKs
Microsoft Graph-SDKs sollen die Entwicklung hochwertiger, effizienter und resilienter Anwendungen, die auf Microsoft Graph zugreifen, vereinfachen. Die SDKs beinhalten zwei Komponenten: eine Dienstbibliothek und eine Kernbibliothek.
Die Dienstbibliothek enthält Modelle und Anforderungs-Generatoren, die aus Microsoft Graph-Metadaten generiert werden, um eine umfassende und auffindbare Erfahrung zu bieten.
Die Kernbibliothek bietet eine Reihe von Features, die die Arbeit mit allen Microsoft Graph-Diensten verbessern. Eingebettete Unterstützung für die Wiederholungsbehandlung, sichere Umleitungen, transparente Authentifizierung und Nutzlastkomprimierung verbessern die Qualität der Interaktionen Ihrer Anwendung mit Microsoft Graph ohne zusätzliche Komplexität, während Sie die Kontrolle behalten. Die Kernbibliothek bietet auch Unterstützung für allgemeine Aufgaben wie das Blättern durch Sammlungen und das Erstellen von Batchanforderungen.
Diese Lerneinheit enthält Informationen zu den verfügbaren SDKs und Codebeispiele für einige der gängigsten Vorgänge.
Hinweis
Die Codebeispiele in dieser Lerneinheit basieren auf Version 5.65 des Microsoft Graph .NET-SDK.
Installieren des Microsoft Graph .NET SDK
Das Microsoft Graph .NET SDK ist in den folgenden NuGet-Paketen enthalten:
- Microsoft.Graph: Enthält die Modelle und Anforderungsgeneratoren für den Zugriff auf den
v1.0
-Endpunkt mit der Fluent-API.Microsoft.Graph
ist abhängig vonMicrosoft.Graph.Core
. - Microsoft.Graph.Beta: Enthält die Modelle und Anforderungsgeneratoren für den Zugriff auf den
beta
-Endpunkt mit der Fluent-API.Microsoft.Graph.Beta
ist abhängig vonMicrosoft.Graph.Core
. - Microsoft.Graph.Core: Die Kernbibliothek für Aufrufe von Microsoft Graph.
Erstellen eines Microsoft Graph-Clients
Der Microsoft Graph-Client ist so konzipiert, dass Aufrufe von Microsoft Graph einfach ausgeführt werden können. Sie können eine einzelne Clientinstanz für die Lebensdauer der Anwendung verwenden. Die folgenden Codebeispiele zeigen, wie Sie eine Instanz eines Microsoft Graph-Clients erstellen. Der Authentifizierungsanbieter übernimmt das Abrufen von Zugriffstoken für die Anwendung. Die verschiedenen Anwendungsanbieter unterstützen verschiedene Clientszenarien. Ausführliche Informationen dazu, welcher Anbieter und welche Optionen für Ihr Szenario geeignet sind, finden Sie unter Auf einem Szenario basierende Auswahl eines Authentifizierungsanbieters.
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);
Lesen von Informationen aus Microsoft Graph
Um Informationen aus Microsoft Graph zu lesen, müssen Sie zunächst ein Anforderungsobjekt erstellen und dann die GET
-Methode für die Anforderung ausführen.
// GET https://graph.microsoft.com/v1.0/me
var user = await graphClient.Me
.GetAsync();
Abrufen einer Liste mit Entitäten
Das Abrufen einer Liste von Entitäten ist ähnlich wie das Abrufen einer einzelnen Entität, mit dem Unterschied, dass es weitere Optionen für die Konfiguration der Anforderung gibt. Der $filter
-Abfrageparameter kann verwendet werden, um das Resultset auf die Zeilen zu reduzieren, die mit der angegebenen Bedingung übereinstimmen. Mit dem Abfrageparameter $orderBy
wird die Liste der Entitäten sortiert nach den angegebenen Eigenschaften vom Server angefordert.
// 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'";
});
Löschen einer Entität
Löschanforderungen werden auf die gleiche Weise wie Anforderungen zum Abrufen einer Entität erstellt, wobei jedoch DELETE
anstelle von GET
verwendet wird.
// 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();
Erstellen einer neuen Entität
Für freie und vorlagenbasierte SDKs können neue Elemente mit einer POST
-Methode zu Sammlungen hinzugefügt werden.
// POST https://graph.microsoft.com/v1.0/me/calendars
var calendar = new Calendar
{
Name = "Volunteer",
};
var newCalendar = await graphClient.Me.Calendars
.PostAsync(calendar);