Migrieren der .NET-Clientbibliothek zu Microsoft Graph
Dieser Artikel ist Teil von Schritt 3: Überprüfen der App-Details zum Prozess zum Migrieren von Apps.
Wenn Ihre App derzeit die Graph-Clientbibliothek von Azure Active Directory (Azure AD) verwendet, wechseln Sie zur Microsoft Graph .NET-Clientbibliothek.
In diesem Artikel erfahren Sie die folgenden allgemeinen Schritte für die Migration zur Microsoft Graph .NET-Clientbibliothek:
- Erstellen eines Microsoft Graph-Clients mit einem Zugriffstoken (das Sie entweder mithilfe der Azure Active Directory-Authentifizierungsbibliothek (ADAL) oder der Microsoft-Authentifizierungsbibliothek (MSAL) abrufen können)
- Formulieren von Anforderungen
- Verwenden von Abfrage-Generatoren
- Behandeln von Sammlungen und Paging
Übersicht über die Migrationsschritte
In den folgenden Schritten wird davon ausgegangen, dass Ihre App ADAL verwendet, um Zugriffstoken zum Aufrufen von Azure AD Graph abzurufen. Der Wechsel zu MSAL kann als separater Schritt durchgeführt werden, der in der Migration zu MSAL beschrieben wird.
Aktualisieren Sie resourceUrl von auf , um ein Zugriffstoken für
https://graph.windows.net
Microsoft Graph abzurufenhttps://graph.microsoft.com
.Aktualisieren Sie in Ihrer App Verweise auf die Microsoft Graph-Clientbibliothek, indem Sie Folgendes ändern:
using Microsoft.Azure.ActiveDirectory.GraphClient;
An:
using Microsoft.Graph;
Verwenden Sie Ihren Paket-Manager, um das Microsoft Graph-NuGet-Paket herunterzuladen und zu aktualisieren und Abhängigkeiten zu aktualisieren.
Aktualisieren Sie Ihren Clientkonstruktor, um anstelle von zu
GraphServiceClient
ActiveDirectoryClient
erstellen. In den folgenden Codeausschnitten wird davon ausgegangen, dass Ihre App dieAcquireTokenAsyncForUser()
-Methode verwendet, um neue Token abzurufen. Eine Definition für diese Methode finden Sie im Beispiel active-directory-dotnet-graphapi-console.Veränderung:
ActiveDirectoryClient client = new ActiveDirectoryClient(serviceRoot, async () => await AcquireTokenAsyncForUser());
An:
GraphServiceClient graphClient = new GraphServiceClient(serviceRoot, new DelegateAuthenticationProvider(async (requestMessage) => { var token = await AcquireTokenAsyncForUser(); requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token); }));
Für die Microsoft Graph-Clientbibliothek enthält der
serviceRoot
Wert auch die Versionsnummer. Derzeit isthttps://graph.microsoft.com/v1.0
dieser Wert .Aktualisieren Sie Anforderungen, um die Syntax des Microsoft Graph-Clientanforderungs-Generators zu verwenden, indem Sie Folgendes ändern:
signedInUser = (User)await client.Me.ExecuteAsync();
An:
signedInUser = (User)await client.Me.Request().GetAsync();
Hinweis
Die Azure AD Graph-Clientbibliothek unterstützte LINQ-basierte Abfragesyntax. Dies ist in der Microsoft Graph-Clientbibliothek jedoch nicht der Fall. Daher müssen Sie die relevanten Abfragen in einen RESTful-Ausdruck konvertieren.
Ändern Sie dazu Folgendes:
var groups = await client.Groups.Where(g => g.DisplayName.StartsWith("a")).ExecuteAsync();
An:
var groups = await client.Groups.Request().Filter("startswith(displayName,'a')").GetAsync();
Wenn Ihre Codepages Sammlungen durchlaufen, nehmen Sie die folgenden geringfügigen Anpassungen vor. Das folgende Beispiel vergleicht und kontrastiert das Abrufen einer Gruppe und das Durchlaufen ihrer Mitglieder ( 5 gleichzeitig). Während der Code für Azure AD Graph ein Fetcher-Konstrukt erfordert, um die Mitglieder einer Gruppe abzurufen, hat Microsoft Graph keine solche Anforderung. Um präzise zu sein, werden nur Benutzermitglieder angezeigt, try/catch- und error-Bedingungen werden nicht angezeigt, und die Codeausschnitte gelten für eine Singlethread-Konsolen-App.
Ändern Sie beispielsweise den folgenden Code mithilfe der Azure AD Graph .NET-Clientbibliothek:
Group retrievedGroup = client.Groups. Where(g => g.ObjectId.Equals(id)).ExecuteAsync().Result; IGroupFetcher retrievedGroupFetcher = (IGroupFetcher) retrievedGroup; var membersPage = retrievedGroupFetcher.Members.Take(5).ExecuteAsync().Result; Console.WriteLine(" Members:"); do { List<IDirectoryObject> members = membersPage.CurrentPage.ToList(); foreach (IDirectoryObject member in members) { if (member is User) { User memberUser = (User)member; Console.WriteLine(" User: {0} ", memberUser.DisplayName); } } membersPage = membersPage.GetNextPageAsync().Result; } while (membersPage != null);
Verwenden Sie den folgenden Code, indem Sie die Microsoft Graph .NET-Clientbibliothek verwenden:
var membersPage = client.Groups[id].Members.Request().Top(5).GetAsync().Result; Console.WriteLine(" Members:"); do { List<DirectoryObject> members = membersPage.CurrentPage.ToList(); foreach (DirectoryObject member in members) { if (member is User) { User memberUser = (User)member; Console.WriteLine(" User: {0} ", memberUser.DisplayName); } } if (membersPage.NextPageRequest != null) membersPage = membersPage.NextPageRequest.GetAsync().Result; else membersPage = null; } while (membersPage != null);
Erstellen und beheben Sie alle Ressourcen-, Eigenschafts-, Navigations- und Dienstaktionsfehler im Zusammenhang mit Namensänderungen.
Die C#-Konsolenausschnitt-App hebt weitere Unterschiede zwischen der Microsoft Graph-Clientbibliothek und der Azure AD Graph-Clientbibliothek hervor.
Die Azure AD Graph-Clientbibliothek unterstützt nur die .NET-Plattform. Die Microsoft Graph-Clientbibliothek unterstützt jedoch zusätzliche Plattformen und Sprachen.