Migrer l’utilisation de la bibliothèque cliente .NET vers Microsoft Graph

Cet article fait partie de l’étape 3 : examiner les détails de l’application du processus de migration des applications.

Si votre application utilise actuellement la bibliothèque Azure Active Directory (Azure AD) Graph client, basculez vers la bibliothèque cliente Microsoft Graph .NET.

REMARQUE : la bibliothèque cliente Microsoft Graph .NET est uniquement prise en charge pour .NET Framework 4.5 et .NET Standard 1.1. Toutefois, consultez la bibliothèque cliente Microsoft Graph .NET pour obtenir les informations de support les plus récentes.

Voici quelques étapes générales à suivre pour migrer vers la bibliothèque cliente Microsoft Graph .NET :

  • Comment créer un client Microsoft Graph, en fonction d’un jeton d’accès (que vous pouvez acquérir à l’aide de la bibliothèque d’authentification Azure Active Directory (ADAL) ou de la bibliothèque d’authentification Microsoft (MSAL))
  • Comment formuler des demandes
  • Utilisation des générateurs de requêtes
  • Comment gérer les collections et la pagination

Vue d’ensemble des étapes de migration

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. Le passage à MSAL peut être effectué en tant qu’étape distincte décrite lors de la migration vers MSAL.

  1. Pour acquérir un jeton d’accès à Microsoft Graph, mettez à jour resourceUrl de https://graph.windows.net . https://graph.microsoft.com

  2. Dans votre application, mettez à jour les références à la bibliothèque cliente Microsoft Graph en modifiant :

    using Microsoft.Azure.ActiveDirectory.GraphClient;
    

    À :

    using Microsoft.Graph;
    
  3. Utilisez votre gestionnaire de package pour télécharger et mettre à jour le package Microsoft Graph NuGet et mettre à jour les dépendances.

  4. Mettez à jour votre constructeur client pour créer GraphServiceClient un , plutôt que ActiveDirectoryClient . Les extraits de code suivants supposent que votre application utilise la AcquireTokenAsyncForUser() méthode pour acquérir de nouveaux jetons. Vous trouverez une définition pour cette méthode dans le cadre de l’exemple de console active-directory-dotnet-graphapi-.

    Modification :

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

    À :

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

    Pour la bibliothèque Graph client Microsoft, la serviceRoot valeur inclut également le numéro de version. Actuellement, cette valeur est https://graph.microsoft.com/v1.0 .

  5. Mettez à jour les demandes d’utilisation de la syntaxe du générateur Graph client Microsoft, en modifiant :

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

    À :

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

    Notes

    La bibliothèque cliente Azure AD Graph la syntaxe de requête LINQ. Toutefois, la bibliothèque cliente Microsoft Graph ne le fait pas. Par conséquent, vous devez convertir les requêtes pertinentes en une expression RESTful plus.

    Pour ce faire, modifiez :

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

    À :

    var groups = await
    client.Groups.Request().Filter("startswith(displayName,'a')").GetAsync();
    
  6. Si vos pages de code traversent des collections, ajustez les modifications mineures suivantes. L’exemple suivant compare et contraste l’extraction d’un groupe et la pagination de ses membres, 5 à la fois. Bien que le code pour Azure AD Graph nécessite une construction de fetcher pour récupérer les membres d’un groupe, Microsoft Graph n’a pas cette exigence. À part cela, le code est relativement similaire. Pour être concis, seuls les membres de l’utilisateur sont affichés, try/catch et les conditions d’erreur ne sont pas affichées, et les extraits de code sont pour une application console à thread unique.

    Par exemple, modifiez le code suivant à l’aide d’Azure AD Graph bibliothèque cliente .NET :

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

    Pour le code suivant à l’aide de la bibliothèque cliente Microsoft Graph .NET :

    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. Créez et corrigez les erreurs de ressource, de propriété, de navigation et d’action de service, généralement liées aux modifications de nom.

Voir aussi

L C# d’extraits de code de la console de Graph met en évidence d’autres différences entre la bibliothèque cliente Microsoft Graph et la bibliothèque cliente Azure AD Graph client.

La bibliothèque cliente Azure AD Graph prend en charge uniquement la plateforme .NET. Toutefois, microsoft Graph bibliothèque cliente prend en charge des plateformes et des langues supplémentaires qui peuvent s’avérer plus utiles pour vos solutions.

Étapes suivantes

  • Découvrez comment déployer, tester et étendre des applications que vous avez migrées vers Microsoft Graph.
  • Examinez à nouveau la liste de contrôle.