Ir para o conteúdo do rodapé
AJUDA DO .NET

MS Graph .NET (Como funciona para desenvolvedores)

O MS Graph .NET serve como uma ferramenta de acesso a dados para interações com a API do Microsoft Graph, uma peça central do ecossistema do Azure Active Directory (Azure AD). O Microsoft Graph é uma porta de entrada para dados e inteligência no Microsoft 365. Ele permite que os desenvolvedores acessem, gerenciem e analisem dados em diversos serviços da Microsoft. A biblioteca cliente do Microsoft Graph simplifica esse processo, fornecendo um conjunto de métodos para interagir facilmente com a API.

IronPDF é uma biblioteca para gerar documentos PDF em aplicações .NET . Ele converte HTML em PDF , sendo útil para a criação automática de relatórios, faturas e documentação. O IronPDF funciona bem com aplicações .NET , oferecendo uma abordagem direta para a geração de PDFs.

A combinação do MS Graph .NET com o IronPDF permite que os desenvolvedores criem aplicativos capazes de manipular dados do Microsoft 365 e gerar documentos PDF. Essa combinação é poderosa para o desenvolvimento de aplicativos de negócios que exigem dados de serviços da Microsoft e precisam apresentar esses dados em um formato de documento padronizado.

Introdução ao MS Graph .NET

Configurando o MS Graph .NET em projetos .NET

Para usar o MS Graph .NET de forma eficaz, especialmente ao trabalhar com IDs de usuário em projetos .NET Core , o primeiro passo é configurar seu projeto .NET . Veja os passos a seguir:

  1. Abra o Gerenciador de Pacotes NuGet .
  2. Pesquise por Microsoft.Graph .
  3. Instale o pacote Microsoft.Graph .

MS Graph .NET (Como funciona para desenvolvedores): Figura 1

Este processo adiciona o MS Graph .NET ao seu projeto. Agora você está pronto para começar a programar com ele.

Um exemplo de código básico

Digamos que você queira recuperar as informações do perfil do usuário atual. Aqui está um exemplo de código simples:

// Required namespaces
using Azure.Identity;
using Microsoft.Graph;

// Defining necessary credentials and scope
var clientId = "Your_Application_Id";
var tenantId = "Your_Tenant_Id";
var clientSecret = "Your_Client_Secret";
var scopes = new[] { "User.Read" };

// Configuring TokenCredentialOptions for Azure Public Cloud
var options = new TokenCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};

// Authenticating using client credentials
var clientSecretCredential = new ClientSecretCredential(
    tenantId, clientId, clientSecret, options);

// Creating a new instance of GraphServiceClient
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

// Fetching current user's profile information
var user = await graphClient.Me
    .Request()
    .GetAsync();

// Printing user's display name
Console.WriteLine($"Hello, {user.DisplayName}!");
// Required namespaces
using Azure.Identity;
using Microsoft.Graph;

// Defining necessary credentials and scope
var clientId = "Your_Application_Id";
var tenantId = "Your_Tenant_Id";
var clientSecret = "Your_Client_Secret";
var scopes = new[] { "User.Read" };

// Configuring TokenCredentialOptions for Azure Public Cloud
var options = new TokenCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};

// Authenticating using client credentials
var clientSecretCredential = new ClientSecretCredential(
    tenantId, clientId, clientSecret, options);

// Creating a new instance of GraphServiceClient
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

// Fetching current user's profile information
var user = await graphClient.Me
    .Request()
    .GetAsync();

// Printing user's display name
Console.WriteLine($"Hello, {user.DisplayName}!");
' Required namespaces
Imports Azure.Identity
Imports Microsoft.Graph

' Defining necessary credentials and scope
Private clientId = "Your_Application_Id"
Private tenantId = "Your_Tenant_Id"
Private clientSecret = "Your_Client_Secret"
Private scopes = { "User.Read" }

' Configuring TokenCredentialOptions for Azure Public Cloud
Private options = New TokenCredentialOptions With {.AuthorityHost = AzureAuthorityHosts.AzurePublicCloud}

' Authenticating using client credentials
Private clientSecretCredential = New ClientSecretCredential(tenantId, clientId, clientSecret, options)

' Creating a new instance of GraphServiceClient
Private graphClient = New GraphServiceClient(clientSecretCredential, scopes)

' Fetching current user's profile information
Private user = await graphClient.Me.Request().GetAsync()

' Printing user's display name
Console.WriteLine($"Hello, {user.DisplayName}!")
$vbLabelText   $csharpLabel

Este trecho de código demonstra a criação de uma nova instância de GraphServiceClient, utilizando um segredo do cliente para autenticação do Azure AD. Ele usa as credenciais do cliente para autenticar. Em seguida, recupera o nome de exibição do usuário atual. Na sequência, certifique-se de que o MS Graph .NET, juntamente com as configurações do seu provedor de autenticação, esteja adicionado ao seu projeto.

Funcionalidades do MS Graph .NET

Recuperar e-mails de usuários

Para recuperar emails da caixa de correio de uma conta Microsoft de um usuário, você utiliza a permissão Mail.Read . Veja como você pode listar os e-mails mais recentes:

// Retrieving the top 10 messages from the user's mailbox
var messages = await graphClient.Me.Messages
    .Request()
    .Top(10)
    .GetAsync();

// Iterating through the messages and printing their subjects
foreach (var message in messages)
{
    Console.WriteLine($"Subject: {message.Subject}");
}
// Retrieving the top 10 messages from the user's mailbox
var messages = await graphClient.Me.Messages
    .Request()
    .Top(10)
    .GetAsync();

// Iterating through the messages and printing their subjects
foreach (var message in messages)
{
    Console.WriteLine($"Subject: {message.Subject}");
}
' Retrieving the top 10 messages from the user's mailbox
Dim messages = Await graphClient.Me.Messages.Request().Top(10).GetAsync()

' Iterating through the messages and printing their subjects
For Each message In messages
	Console.WriteLine($"Subject: {message.Subject}")
Next message
$vbLabelText   $csharpLabel

Este código lista os assuntos dos 10 principais e-mails na caixa de entrada do usuário.

Enviar um e-mail

Enviar um e-mail envolve criar um objeto Message e enviá-lo:

// Creating a message to be sent
var message = new Message
{
    Subject = "Hello from MS Graph .NET",
    Body = new ItemBody
    {
        ContentType = BodyType.Text,
        Content = "Hello, this is a test email."
    },
    ToRecipients = new List<Recipient>()
    {
        new Recipient
        {
            EmailAddress = new EmailAddress
            {
                Address = "recipient@example.com"
            }
        }
    }
};

// Sending the email
await graphClient.Me.SendMail(message, null)
    .Request()
    .PostAsync();
// Creating a message to be sent
var message = new Message
{
    Subject = "Hello from MS Graph .NET",
    Body = new ItemBody
    {
        ContentType = BodyType.Text,
        Content = "Hello, this is a test email."
    },
    ToRecipients = new List<Recipient>()
    {
        new Recipient
        {
            EmailAddress = new EmailAddress
            {
                Address = "recipient@example.com"
            }
        }
    }
};

// Sending the email
await graphClient.Me.SendMail(message, null)
    .Request()
    .PostAsync();
' Creating a message to be sent
Dim message As New Message With {
	.Subject = "Hello from MS Graph .NET",
	.Body = New ItemBody With {
		.ContentType = BodyType.Text,
		.Content = "Hello, this is a test email."
	},
	.ToRecipients = New List(Of Recipient)() From {
		New Recipient With {
			.EmailAddress = New EmailAddress With {.Address = "recipient@example.com"}
		}
	}
}

' Sending the email
Await graphClient.Me.SendMail(message, Nothing).Request().PostAsync()
$vbLabelText   $csharpLabel

Isso envia um e-mail com um corpo de texto simples.

Gerenciando eventos do calendário

Para adicionar um evento ao calendário do usuário:

// Creating a calendar event
var @event = new Event
{
    Subject = "Team Meeting",
    Body = new ItemBody
    {
        ContentType = BodyType.Html,
        Content = "Discuss project updates."
    },
    Start = new DateTimeTimeZone
    {
        DateTime = "2024-04-15T12:00:00",
        TimeZone = "Pacific Standard Time"
    },
    End = new DateTimeTimeZone
    {
        DateTime = "2024-04-15T14:00:00",
        TimeZone = "Pacific Standard Time"
    },
    Location = new Location
    {
        DisplayName = "Conference Room 1"
    }
};

// Adding the event to the user's calendar
await graphClient.Me.Events
    .Request()
    .AddAsync(@event);
// Creating a calendar event
var @event = new Event
{
    Subject = "Team Meeting",
    Body = new ItemBody
    {
        ContentType = BodyType.Html,
        Content = "Discuss project updates."
    },
    Start = new DateTimeTimeZone
    {
        DateTime = "2024-04-15T12:00:00",
        TimeZone = "Pacific Standard Time"
    },
    End = new DateTimeTimeZone
    {
        DateTime = "2024-04-15T14:00:00",
        TimeZone = "Pacific Standard Time"
    },
    Location = new Location
    {
        DisplayName = "Conference Room 1"
    }
};

// Adding the event to the user's calendar
await graphClient.Me.Events
    .Request()
    .AddAsync(@event);
' Creating a calendar event
Dim [event] As [Event] = New [Event] With {
	.Subject = "Team Meeting",
	.Body = New ItemBody With {
		.ContentType = BodyType.Html,
		.Content = "Discuss project updates."
	},
	.Start = New DateTimeTimeZone With {
		.DateTime = "2024-04-15T12:00:00",
		.TimeZone = "Pacific Standard Time"
	},
	.End = New DateTimeTimeZone With {
		.DateTime = "2024-04-15T14:00:00",
		.TimeZone = "Pacific Standard Time"
	},
	.Location = New Location With {.DisplayName = "Conference Room 1"}
}

' Adding the event to the user's calendar
Await graphClient.Me.Events.Request().AddAsync([event])
$vbLabelText   $csharpLabel

Este código agenda um novo evento no calendário.

Acessando arquivos do OneDrive

Para listar os arquivos a partir da raiz do OneDrive do usuário:

// Retrieving files from the root OneDrive folder
var files = await graphClient.Me.Drive.Root.Children
    .Request()
    .GetAsync();

// Printing each file's name
foreach (var file in files)
{
    Console.WriteLine(file.Name);
}
// Retrieving files from the root OneDrive folder
var files = await graphClient.Me.Drive.Root.Children
    .Request()
    .GetAsync();

// Printing each file's name
foreach (var file in files)
{
    Console.WriteLine(file.Name);
}
' Retrieving files from the root OneDrive folder
Dim files = Await graphClient.Me.Drive.Root.Children.Request().GetAsync()

' Printing each file's name
For Each file In files
	Console.WriteLine(file.Name)
Next file
$vbLabelText   $csharpLabel

Este código imprime os nomes dos arquivos no diretório raiz do OneDrive.

Trabalhando com equipes

Para obter a lista das equipes das quais o usuário faz parte:

// Retrieving teams that the user is part of
var teams = await graphClient.Me.JoinedTeams
    .Request()
    .GetAsync();

// Printing each team's display name
foreach (var team in teams)
{
    Console.WriteLine($"Team name: {team.DisplayName}");
}
// Retrieving teams that the user is part of
var teams = await graphClient.Me.JoinedTeams
    .Request()
    .GetAsync();

// Printing each team's display name
foreach (var team in teams)
{
    Console.WriteLine($"Team name: {team.DisplayName}");
}
' Retrieving teams that the user is part of
Dim teams = Await graphClient.Me.JoinedTeams.Request().GetAsync()

' Printing each team's display name
For Each team In teams
	Console.WriteLine($"Team name: {team.DisplayName}")
Next team
$vbLabelText   $csharpLabel

Esta lista exibe os nomes das equipes das quais o usuário faz parte.

Cada uma dessas funcionalidades demonstra o poder e a versatilidade do MS Graph .NET. Eles mostram como você pode integrar os serviços do Microsoft 365 aos seus aplicativos.

Integrando o MS Graph .NET com o IronPDF

MS Graph .NET (Como funciona para desenvolvedores): Figura 2

Se você pretende trabalhar com PDFs em suas aplicações .NET , a biblioteca IronPDF para desenvolvedores .NET é uma excelente opção. Ela permite que suas aplicações leiam, criem e manipulem arquivos PDF sem a necessidade de ferramentas ou softwares externos.

Caso de uso: Integração do IronPDF com o MS Graph .NET

Imagine que você está criando um aplicativo que precisa buscar documentos do Microsoft 365, como relatórios ou faturas, e convertê-los em PDFs. O MS Graph .NET permite interagir com recursos do Microsoft 365, incluindo arquivos armazenados no OneDrive ou SharePoint. O IronPDF pode então ser usado para pegar esses documentos e convertê-los em PDFs. Essa combinação é especialmente útil para a geração automatizada de relatórios ou para o arquivamento de e-mails e anexos em formato PDF para facilitar a distribuição.

Exemplo de código: Do ​​MS Graph para PDF

Vamos analisar um exemplo simples. Vamos buscar um documento do OneDrive usando o MS Graph .NET e, em seguida, converter esse documento para PDF usando o IronPDF. Presumo que você já tenha configurado sua autenticação com o MSGraph; Caso contrário, existe muita documentação no site da Microsoft para você começar.

// Simplified example, ensure to handle exceptions and errors appropriately.
using Microsoft.Graph;
using IronPdf;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Setting up the GraphServiceClient with a DelegateAuthenticationProvider
        var graphClient = new GraphServiceClient(
            new DelegateAuthenticationProvider(
                async (requestMessage) =>
                {
                    // Insert code to acquire token
                    string accessToken = await GetAccessTokenAsync();
                    requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
                }));

        // Replace 'itemId' with the ID of your document in OneDrive
        var stream = await graphClient.Me.Drive.Items["itemId"].Content.Request().GetAsync();

        // IronPDF setup to convert the fetched file to PDF
        var renderer = new HtmlToPdf();
        var pdfDocument = renderer.RenderHtmlAsPdf(StreamToString(stream));

        // Save the PDF to a file
        pdfDocument.SaveAs("YourDocument.pdf");
    }

    // Method to convert a Stream to a String
    static string StreamToString(Stream stream)
    {
        using (var reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
        }
    }

    // Method to obtain the access token
    static async Task<string> GetAccessTokenAsync()
    {
        // Implement your authentication logic here to return the access token
        return "your_access_token";
    }
}
// Simplified example, ensure to handle exceptions and errors appropriately.
using Microsoft.Graph;
using IronPdf;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Setting up the GraphServiceClient with a DelegateAuthenticationProvider
        var graphClient = new GraphServiceClient(
            new DelegateAuthenticationProvider(
                async (requestMessage) =>
                {
                    // Insert code to acquire token
                    string accessToken = await GetAccessTokenAsync();
                    requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
                }));

        // Replace 'itemId' with the ID of your document in OneDrive
        var stream = await graphClient.Me.Drive.Items["itemId"].Content.Request().GetAsync();

        // IronPDF setup to convert the fetched file to PDF
        var renderer = new HtmlToPdf();
        var pdfDocument = renderer.RenderHtmlAsPdf(StreamToString(stream));

        // Save the PDF to a file
        pdfDocument.SaveAs("YourDocument.pdf");
    }

    // Method to convert a Stream to a String
    static string StreamToString(Stream stream)
    {
        using (var reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
        }
    }

    // Method to obtain the access token
    static async Task<string> GetAccessTokenAsync()
    {
        // Implement your authentication logic here to return the access token
        return "your_access_token";
    }
}
' Simplified example, ensure to handle exceptions and errors appropriately.
Imports Microsoft.Graph
Imports IronPdf
Imports System.IO
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Setting up the GraphServiceClient with a DelegateAuthenticationProvider
		Dim graphClient = New GraphServiceClient(New DelegateAuthenticationProvider(Async Sub(requestMessage)
					' Insert code to acquire token
					Dim accessToken As String = Await GetAccessTokenAsync()
					requestMessage.Headers.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken)
		End Sub))

		' Replace 'itemId' with the ID of your document in OneDrive
		Dim stream = Await graphClient.Me.Drive.Items("itemId").Content.Request().GetAsync()

		' IronPDF setup to convert the fetched file to PDF
		Dim renderer = New HtmlToPdf()
		Dim pdfDocument = renderer.RenderHtmlAsPdf(StreamToString(stream))

		' Save the PDF to a file
		pdfDocument.SaveAs("YourDocument.pdf")
	End Function

	' Method to convert a Stream to a String
	Private Shared Function StreamToString(ByVal stream As Stream) As String
		Using reader = New StreamReader(stream)
			Return reader.ReadToEnd()
		End Using
	End Function

	' Method to obtain the access token
	Private Shared Async Function GetAccessTokenAsync() As Task(Of String)
		' Implement your authentication logic here to return the access token
		Return "your_access_token"
	End Function
End Class
$vbLabelText   $csharpLabel

Algumas observações importantes neste código:

Estamos usando o MSGraph para acessar um arquivo armazenado no OneDrive. Você precisará do ID do item, que pode ser obtido por meio da API do Graph.

  • Neste exemplo, convertemos o fluxo de arquivo em uma string. Isso funciona bem para documentos HTML. Se você estiver lidando com arquivos binários (como documentos do Word), precisará usar um método diferente para converter esses arquivos em PDFs.
  • O método RenderHtmlAsPdf do IronPDF é usado aqui para criar um PDF a partir de uma string HTML. Se o seu documento de origem não for HTML, o IronPDF oferece métodos para trabalhar também com outros formatos.

Lembre-se, este é um exemplo simplificado. Em uma aplicação real, você precisaria lidar com a autenticação de forma mais robusta, gerenciar erros e, potencialmente, lidar com diferentes formatos de arquivo de maneira mais adequada. Mas isso deve lhe dar um bom ponto de partida para integrar o MSGraph e o IronPDF em seus projetos .NET .

Conclusão

MS Graph .NET (Como funciona para desenvolvedores): Figura 3

Para desenvolvedores que desejam integrar os recursos do Microsoft 365 em seus aplicativos C#, o SDK do Microsoft Graph for .NET é uma ferramenta essencial. Comece explorando as informações de licenciamento e preços do SDK .NET do MS Graph a partir de $799.

Perguntas frequentes

Como o MS Graph .NET ajuda os desenvolvedores a acessar dados do Microsoft 365?

O MS Graph .NET funciona como uma porta de entrada para que os desenvolvedores acessem e gerenciem dados do Microsoft 365 por meio da API do Microsoft Graph, que faz parte do ecossistema do Azure Active Directory. Ele fornece métodos para simplificar o processo de interação com os dados.

Como os desenvolvedores podem gerar documentos PDF em .NET usando dados do Microsoft 365?

Os desenvolvedores podem usar o IronPDF para gerar documentos PDF em aplicativos .NET, convertendo HTML e outros formatos de documento em PDFs, aproveitando os dados acessados por meio do MS Graph .NET.

O que é necessário para começar a usar o MS Graph .NET em um projeto?

Para começar a usar o MS Graph .NET, você precisa instalar o pacote Microsoft.Graph por meio do Gerenciador de Pacotes NuGet e configurar a autenticação usando as credenciais do cliente para interagir com os serviços do Microsoft 365.

Como um desenvolvedor pode enviar um e-mail usando o MS Graph .NET?

Um desenvolvedor pode enviar um e-mail usando o MS Graph .NET criando um objeto `Message` com o conteúdo desejado e os detalhes do destinatário e, em seguida, utilizando o método `SendMail` do `GraphServiceClient`.

O MS Graph .NET consegue gerenciar eventos de calendário em uma conta do Microsoft 365?

Sim, o MS Graph .NET permite gerenciar eventos de calendário criando objetos `Event` e usando métodos como `Me.Events.Request().AddAsync(event)` para adicionar eventos ao calendário de um usuário.

Como converter um documento do OneDrive para PDF em uma aplicação .NET?

Para converter um documento do OneDrive para PDF, você pode usar o MS Graph .NET para obter o documento e, em seguida, usar o IronPDF para converter o conteúdo do documento para o formato PDF.

Que considerações devem ser feitas ao integrar o MS Graph .NET com o IronPDF?

Ao integrar o MS Graph .NET com o IronPDF, considere uma autenticação robusta, tratamento de erros e a compatibilidade com diferentes formatos de arquivo para garantir uma conversão e gerenciamento de dados perfeitos.

Quais são algumas aplicações práticas do uso conjunto do MS Graph .NET e do IronPDF?

A utilização conjunta do MS Graph .NET e do IronPDF permite a criação de aplicações como a geração de relatórios em PDF, o arquivamento de e-mails em PDF ou a criação de documentos comerciais padronizados a partir de dados do Microsoft 365.

Como o MS Graph .NET pode melhorar a eficiência das aplicações .NET?

O MS Graph .NET melhora a eficiência ao fornecer acesso simplificado aos serviços do Microsoft 365, permitindo que os desenvolvedores recuperem, gerenciem e manipulem dados com o mínimo de código, aumentando assim a produtividade e a capacidade do aplicativo.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim