Consultar o Microsoft Graph usando SDKs

Concluído

Os SDKs do Microsoft Graph foram projetados para simplificar a criação de aplicativos de alta qualidade, eficientes e resilientes que acessem o Microsoft Graph. Os SDKs incluem dois componentes: uma biblioteca de serviço e uma biblioteca principal.

A biblioteca de serviços contém modelos e construtores de solicitações gerados com metadados do Microsoft Graph, para fornecer uma experiência avançada e detectável.

A biblioteca principal fornece um conjunto de recursos que aprimoram o trabalho com todos os serviços do Microsoft Graph. O suporte inserido para manipulação de novas tentativas, redirecionamentos seguros, autenticação transparente e compactação de carga útil, melhora a qualidade das interações do seu aplicativo com o Microsoft Graph, sem complexidade adicional, enquanto deixa você completamente no controle. A biblioteca principal também oferece suporte para tarefas comuns, como paginar por coleções e criar solicitações em lote.

Nesta unidade, você aprenderá sobre os SDKs disponíveis e verá alguns exemplos de código de algumas das operações mais comuns.

Observação

Os exemplos de código nesta unidade são baseados na versão 5.65 do SDK do Microsoft Graph .NET.

Instalar o SDK do Microsoft Graph .NET

O SDK do Microsoft Graph .NET está incluído nos seguintes pacotes NuGet:

  • Microsoft.Graph - contém os modelos e construtores de solicitação para acessar o ponto de extremidade v1.0 com a API fluente. Microsoft.Graph tem uma dependência de Microsoft.Graph.Core.
  • Microsoft.Graph.Beta - contém os modelos e construtores de solicitação para acessar o ponto de extremidade beta com a API fluente. Microsoft.Graph.Beta tem uma dependência de Microsoft.Graph.Core.
  • Microsoft.Graph.Core - a biblioteca principal para fazer chamadas para o Microsoft Graph.

Crie um cliente do Microsoft Graph

O cliente do Microsoft Graph foi desenvolvido para simplificar a realização de chamadas para o Microsoft Graph. Você pode usar uma única instância do cliente para o tempo de vida do aplicativo. Os exemplos de código a seguir mostram como criar uma instância de um cliente do Microsoft Graph. O provedor de autenticação lidará com a aquisição de tokens de acesso para o aplicativo. Os diferentes provedores de aplicativos oferecem suporte a diferentes cenários de cliente. Para obter detalhes sobre qual provedor e opções são apropriados para seu cenário, confira Escolher um provedor de autenticação.

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

Ler informações do Microsoft Graph

Para ler informações do Microsoft Graph, primeiro você precisa criar um objeto de solicitação e, em seguida, executar o método GET na solicitação.

// GET https://graph.microsoft.com/v1.0/me

var user = await graphClient.Me
    .GetAsync();

Recuperar uma lista de entidades

A recuperação de uma lista de entidades é semelhante à recuperação de apenas uma entidade, exceto que há várias outras opções para configurar a solicitação. O parâmetro de consulta $filter pode ser usado para reduzir o conjunto de resultados para apenas as linhas que correspondem à condição fornecida. O parâmetro de consulta $orderBy solicita que o servidor forneça a lista de entidades classificadas pelas propriedades especificadas.

// 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'";
    });

Excluir uma entidade

As solicitações de exclusão são construídas da mesma maneira que as solicitações de recuperação de uma entidade, mas usam uma solicitação DELETE em vez de GET.

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

Criar uma nova entidade

Para SDKs baseados em modelo e estilo fluente, novos itens podem ser adicionados a coleções com um método POST.

// POST https://graph.microsoft.com/v1.0/me/calendars
var calendar = new Calendar
{
    Name = "Volunteer",
};

var newCalendar = await graphClient.Me.Calendars
    .PostAsync(calendar);

Outros recursos