Migrer une utilisation de la bibliothèque cliente .NET vers Microsoft GraphMigrate .NET client library use to Microsoft Graph

Cet article fait partie de l' étape 3 : examiner les détails de l’application du processus pour migrer des applications.This article is part of step 3: review app details of the process to migrate apps.

Si votre application utilise actuellement la bibliothèque cliente Azure AD Graph, basculez vers la bibliothèque client .NET Microsoft Graph.If your app currently uses the Azure AD Graph client library, switch to the Microsoft Graph .NET client library.

Remarque : la bibliothèque cliente .NET Microsoft Graph est uniquement prise en charge pour .NET Framework 4,5 et .NET standard 1,1.NOTE: The Microsoft Graph .NET client library is only supported for .NET Framework 4.5 and .NET Standard 1.1. Toutefois, consultez la bibliothèque client .NET Microsoft Graph pour obtenir les dernières informations de support technique.However please consult Microsoft Graph .NET client library for the latest support information.

Voici quelques étapes générales à suivre pour migrer vers la bibliothèque cliente .NET Microsoft Graph :Here, we'll look at some general steps to migrate over to the Microsoft Graph .NET client library:

  • Comment créer un client Microsoft Graph, en fonction d’un jeton d’accès (que vous pouvez acquérir à l’aide de ADAL ou de MSAL)How to create a Microsoft Graph client, given an access token (that you can acquire using ADAL or MSAL)
  • Formulation de requêtesHow to formulate requests
  • Utilisation des générateurs de requêtesHow to use query builders
  • Gestion des collections et de la paginationHow to handle collections and paging

Vue d’ensemble des étapes de migrationOverview of the migration steps

Les étapes suivantes supposent que votre application utilise déjà ADAL pour acquérir des jetons d’accès pour appeler Azure AD Graph et que, pour l’instant, vous continuerez à utiliser ADAL.The following steps assume your app is already using ADAL to acquire access tokens to call Azure AD Graph, and that for now you will continue to use ADAL. Le basculement vers MSAL peut être réalisé comme une étape distincte décrite dans migration vers MSAL.Switching to MSAL can be done as a separate step described in migrating to MSAL.

  1. Pour acquérir un jeton d’accès à Microsoft Graph, mettez à jour resourceUrl de https://graph.windows.net vers https://graph.microsoft.com .To acquire an access token to Microsoft Graph, update resourceUrl from https://graph.windows.net to https://graph.microsoft.com.

  2. Dans votre application, mettez à jour les références à la bibliothèque cliente Microsoft Graph en modifiant :In your app, update references to the Microsoft Graph client library by changing:

    using Microsoft.Azure.ActiveDirectory.GraphClient;
    

    À :To:

    using Microsoft.Graph;
    
  3. Utilisez votre gestionnaire de package pour télécharger et mettre à jour le package NuGet Microsoft Graph et mettre à jour les dépendances.Use your package manager to download and update the Microsoft Graph NuGet package and update dependencies.

  4. Mettez à jour votre constructeur client pour créer un GraphServiceClient , et non ActiveDirectoryClient .Update your client constructor to create a GraphServiceClient, rather than ActiveDirectoryClient. Les extraits de code suivants supposent que votre application utilise la AcquireTokenAsyncForUser() méthode pour acquérir de nouveaux jetons.The following code snippets assume your app is using the AcquireTokenAsyncForUser() method to acquire new tokens. Vous pouvez trouver une définition pour cette méthode dans le cadre de l' exemple de console Active-Directory-dotnet-graphapi.You can find a definition for this method as part of the active-directory-dotnet-graphapi-console sample.

    PortChange:

    ActiveDirectoryClient client = new ActiveDirectoryClient(serviceRoot,
    async () => await AcquireTokenAsyncForUser());
    

    À :To:

    GraphServiceClient graphClient = new GraphServiceClient(serviceRoot,
       new DelegateAuthenticationProvider(async (requestMessage) => {
          var token = await AcquireTokenAsyncForUser();
          requestMessage.Headers.Authorization = new
             AuthenticationHeaderValue("bearer", token);
       }));
    

    Pour la bibliothèque cliente Microsoft Graph, la serviceRoot valeur inclut également le numéro de version.For Microsoft Graph client library, the serviceRoot value also includes the version number. Actuellement, cette valeur est https://graph.microsoft.com/v1.0 .Currently, that value is https://graph.microsoft.com/v1.0.

  5. Mettez à jour les demandes d’utilisation de la syntaxe du générateur de requêtes client Microsoft Graph, en modifiant :Update requests to use the Microsoft Graph client request builder syntax, by changing:

    signedInUser = (User)await client.Me.ExecuteAsync();
    

    À :To:

    signedInUser = (User)await client.Me.Request().GetAsync();
    

    Notes

    La bibliothèque cliente Azure AD Graph prenait en charge la syntaxe de requête basée sur LINQ.The Azure AD Graph client library supported LINQ-based query syntax. Toutefois, la bibliothèque cliente Microsoft Graph ne le fait pas.However, the Microsoft Graph client library does not. Par conséquent, vous devrez convertir les requêtes pertinentes en une expression plus RESTful.Consequently, you'll need to convert the relevant queries to a more RESTful expression.

    Pour ce faire, modifiez les éléments suivants :To do so, change:

    var groups = await
    client.Groups.Where(g => g.DisplayName.StartsWith("a")).ExecuteAsync();
    

    À :To:

    var groups = await
    client.Groups.Request().Filter("startswith(displayName,'a')").GetAsync();
    
  6. Si vos pages de codes traversent des collections, effectuez les ajustements mineurs suivants.If your code pages through collections, make the following minor adjustments. L’exemple suivant compare et contraste la récupération d’un groupe et la mise en page par le biais de ses membres, 5 à la fois.The following example compares and contrasts fetching a group and paging through its members, 5 at a time. Alors que le code pour Azure AD Graph nécessite une construction de récupération pour extraire les membres d’un groupe, Microsoft Graph n’a pas cette exigence.While the code for Azure AD Graph requires a fetcher construct in order to fetch a group's members, Microsoft Graph has no such requirement. Par ailleurs, le code est relativement similaire.Other than that, the code is relatively similar. Pour être concis, seuls les membres de l’utilisateur sont affichés, les conditions try/catch et d’erreur ne sont pas affichées, et les extraits de code sont pour une application console à thread unique.To be concise, only user members are displayed, try/catch and error conditions are not shown, and the code snippets are for a single-threaded console app.

    À titre d’exemple, modifiez le code suivant à l’aide de la bibliothèque cliente .NET Azure AD Graph :As an example, change the following code using the Azure AD Graph .NET client library:

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

    Dans le code suivant à l’aide de la bibliothèque cliente .NET Microsoft Graph :To the following code using the Microsoft Graph .NET client library:

    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);
    
    
  7. Générez et corrigez les erreurs de ressource, de propriété, de navigation et d’action de service, généralement liées aux modifications apportées au nom.Build and fix any resource, property, navigation, and service action errors, generally related to name changes.

Voir aussiSee also

L’application d’extraits de code de console C# met en évidence les différences entre la bibliothèque cliente Microsoft Graph et la bibliothèque cliente Azure ad Graph.The C# console snippets app highlights more of the differences between Microsoft Graph client library and Azure AD Graph client library.

La bibliothèque cliente Azure AD Graph prend en charge uniquement la plateforme .NET.The Azure AD Graph client library supports only the .NET platform. Toutefois, la bibliothèque cliente Microsoft Graph prend en charge des plateformes et des langues supplémentaires que vous pouvez trouver plus utiles pour vos solutions.However, Microsoft Graph client library supports additional platforms and languages that you may find more useful for your solutions.

Étapes suivantesNext Steps