Migrar o uso da biblioteca de clientes .NET para o Microsoft GraphMigrate .NET client library use to Microsoft Graph

Este artigo faz parte da etapa 3: revisar detalhes do aplicativo do processo para migrar aplicativos.This article is part of step 3: review app details of the process to migrate apps.

Se seu aplicativo atualmente usa a biblioteca de clientes do Azure AD Graph, alternar para a biblioteca de clientes do Microsoft Graph .NET.If your app currently uses the Azure AD Graph client library, switch to the Microsoft Graph .NET client library.

OBSERVAÇÃO: a biblioteca de clientes do Microsoft Graph .NET só tem suporte para .NET Framework 4.5 e .NET Standard 1.1.NOTE: The Microsoft Graph .NET client library is only supported for .NET Framework 4.5 and .NET Standard 1.1. No entanto, consulte a biblioteca de clientes do Microsoft Graph .NET para obter as informações de suporte mais recentes.However please consult Microsoft Graph .NET client library for the latest support information.

Aqui, vamos ver algumas etapas gerais para migrar para a biblioteca de clientes do Microsoft Graph .NET:Here, we'll look at some general steps to migrate over to the Microsoft Graph .NET client library:

  • Como criar um cliente do Microsoft Graph, dado um token de acesso (que você pode adquirir usando ADAL ou MSAL)How to create a Microsoft Graph client, given an access token (that you can acquire using ADAL or MSAL)
  • Como formular solicitaçõesHow to formulate requests
  • Como usar construtores de consultaHow to use query builders
  • Como lidar com coleções e pajamentoHow to handle collections and paging

Visão geral das etapas de migraçãoOverview of the migration steps

As etapas a seguir pressuem que seu aplicativo já está usando o ADAL para adquirir tokens de acesso para chamar o Azure AD Graph e que, por enquanto, você continuará a usar o 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. Alternar para MSAL pode ser feito como uma etapa separada descrita na migração para MSAL.Switching to MSAL can be done as a separate step described in migrating to MSAL.

  1. Para adquirir um token de acesso ao Microsoft Graph, atualize resourceUrl https://graph.windows.net de para 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. Em seu aplicativo, atualize referências à biblioteca de clientes do Microsoft Graph alterando:In your app, update references to the Microsoft Graph client library by changing:

    using Microsoft.Azure.ActiveDirectory.GraphClient;
    

    Para:To:

    using Microsoft.Graph;
    
  3. Use seu gerenciador de pacotes para baixar e atualizar o pacote nuGet do Microsoft Graph e atualizar dependências.Use your package manager to download and update the Microsoft Graph NuGet package and update dependencies.

  4. Atualize o construtor do cliente para criar GraphServiceClient um , em vez de ActiveDirectoryClient .Update your client constructor to create a GraphServiceClient, rather than ActiveDirectoryClient. Os trechos de código a seguir pressuem que seu aplicativo está usando o AcquireTokenAsyncForUser() método para adquirir novos tokens.The following code snippets assume your app is using the AcquireTokenAsyncForUser() method to acquire new tokens. Você pode encontrar uma definição para esse método como parte do exemplo active-directory-dotnet-graphapi-console.You can find a definition for this method as part of the active-directory-dotnet-graphapi-console sample.

    Alterar:Change:

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

    Para:To:

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

    Para a biblioteca de clientes do Microsoft Graph, serviceRoot o valor também inclui o número da versão.For Microsoft Graph client library, the serviceRoot value also includes the version number. Atualmente, esse valor é https://graph.microsoft.com/v1.0 .Currently, that value is https://graph.microsoft.com/v1.0.

  5. Atualizar solicitações para usar a sintaxe do construtor de solicitações de cliente do Microsoft Graph, alterando:Update requests to use the Microsoft Graph client request builder syntax, by changing:

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

    Para:To:

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

    Observação

    A biblioteca de clientes do Azure AD Graph suportava sintaxe de consulta baseada em LINQ.The Azure AD Graph client library supported LINQ-based query syntax. No entanto, a biblioteca de clientes do Microsoft Graph não.However, the Microsoft Graph client library does not. Consequentemente, você precisará converter as consultas relevantes em uma expressão mais RESTful.Consequently, you'll need to convert the relevant queries to a more RESTful expression.

    Para fazer isso, altere:To do so, change:

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

    Para:To:

    var groups = await
    client.Groups.Request().Filter("startswith(displayName,'a')").GetAsync();
    
  6. Se seu código for páginas por coleções, faça os seguintes ajustes secundários.If your code pages through collections, make the following minor adjustments. O exemplo a seguir compara e contrasta a busca de um grupo e a paagem através de seus membros, 5 de cada vez.The following example compares and contrasts fetching a group and paging through its members, 5 at a time. Embora o código do Azure AD Graph exija uma construção de buscador para buscar os membros de um grupo, o Microsoft Graph não tem esse requisito.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. Fora isso, o código é relativamente semelhante.Other than that, the code is relatively similar. Para ser conciso, apenas os membros do usuário são exibidos, as condições de tentativa/captura e erro não são mostradas e os trechos de código são para um aplicativo de console de thread único.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.

    Como exemplo, altere o código a seguir usando a biblioteca de clientes do Azure AD Graph .NET: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);
    
    

    Para o código a seguir usando a biblioteca de clientes do Microsoft Graph .NET: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. Crie e corrige qualquer recurso, propriedade, navegação e erros de ação de serviço, geralmente relacionados a alterações de nome.Build and fix any resource, property, navigation, and service action errors, generally related to name changes.

Confira tambémSee also

O C# de console realça mais das diferenças entre a biblioteca de clientes do Microsoft Graph e a biblioteca de clientes do Azure AD Graph.The C# console snippets app highlights more of the differences between Microsoft Graph client library and Azure AD Graph client library.

A biblioteca de clientes do Azure AD Graph dá suporte apenas à plataforma .NET.The Azure AD Graph client library supports only the .NET platform. No entanto, a biblioteca de clientes do Microsoft Graph oferece suporte a plataformas e idiomas adicionais que podem ser mais úteis para suas soluções.However, Microsoft Graph client library supports additional platforms and languages that you may find more useful for your solutions.

Próximas etapasNext Steps