AYUDA .NET

MS Graph .NET (Cómo funciona para desarrolladores)

Actualizado 29 de abril, 2024
Compartir:

MS Graph .NET sirve de herramienta de datos de acceso para las interacciones con la API Graph de Microsoft, una pieza central del Azure Active Directory. (Azure AD) ecosistema. Microsoft Graph es una puerta de acceso a los datos y la inteligencia en Microsoft 365. Permite a los desarrolladores acceder, gestionar y analizar datos en varios servicios de Microsoft. La biblioteca de clientes Microsoft Graph simplifica este proceso proporcionando un conjunto de métodos para interactuar fácilmente con la API.

IronPDF es una biblioteca para generar documentos PDF en aplicaciones .NET. En convierte HTML a PDF por lo que resulta útil para crear informes, facturas y documentación de forma automática. IronPDF funciona bien con aplicaciones .NET, ofreciendo un enfoque directo a la generación de PDF.

La combinación de MS Graph .NET e IronPDF permite a los desarrolladores crear aplicaciones que pueden manipular datos de Microsoft 365 y producir documentos PDF. Esta combinación es potente para desarrollar aplicaciones empresariales que requieren datos de servicios de Microsoft y necesitan presentar esos datos en un formato de documento estandarizado.

Primeros pasos con MS Graph .NET

Configuración de MS Graph .NET en proyectos .NET

Para utilizar MS Graph .NET de forma eficaz, especialmente cuando se trabaja con identificadores de usuario en proyectos .NET Core, el primer paso es configurar el proyecto .NET. Estos son los pasos:

  1. Abra el gestor de paquetes NuGet.
  2. Busca Microsoft.Graph.

    1. Instale el paquete Microsoft.Graph.

    MS Graph .NET (Cómo funciona para los desarrolladores): Figura 1

    Este proceso añade MS Graph .NET a su proyecto. Ahora, estás listo para empezar a codificar con él.

Un ejemplo de código básico

Supongamos que desea recuperar la información del perfil del usuario actual. He aquí un sencillo ejemplo de código:

var clientId = "Your_Application_Id";
var tenantId = "Your_Tenant_Id";
var clientSecret = "Your_Client_Secret";
var scopes = new [] { "User.Read" };
var options = new TokenCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
var clientSecretCredential = new ClientSecretCredential(
    tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var user = await graphClient.Me
    .Request()
    .GetAsync();
Console.WriteLine($"Hello, {user.DisplayName}!");
var clientId = "Your_Application_Id";
var tenantId = "Your_Tenant_Id";
var clientSecret = "Your_Client_Secret";
var scopes = new [] { "User.Read" };
var options = new TokenCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
var clientSecretCredential = new ClientSecretCredential(
    tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var user = await graphClient.Me
    .Request()
    .GetAsync();
Console.WriteLine($"Hello, {user.DisplayName}!");
Dim clientId = "Your_Application_Id"
Dim tenantId = "Your_Tenant_Id"
Dim clientSecret = "Your_Client_Secret"
Dim scopes = { "User.Read" }
Dim options = New TokenCredentialOptions With {.AuthorityHost = AzureAuthorityHosts.AzurePublicCloud}
Dim clientSecretCredential As New ClientSecretCredential(tenantId, clientId, clientSecret, options)
Dim graphClient = New GraphServiceClient(clientSecretCredential, scopes)
Dim user = Await graphClient.Me.Request().GetAsync()
Console.WriteLine($"Hello, {user.DisplayName}!")
VB   C#

Este fragmento de código demuestra la creación de una nueva instancia de GraphServiceClient, utilizando un secreto de cliente para la autenticación de Azure AD. Utiliza las credenciales del cliente para autenticarse. A continuación, recupera el nombre para mostrar del usuario actual. Siguiendo los siguientes fragmentos de código asegúrese de que MS Graph .NET, junto con las configuraciones de su proveedor de autenticación, se añade a su proyecto.

Características de MS Graph .NET

Recuperar correos electrónicos de usuarios

Para recuperar correos electrónicos del buzón de la cuenta Microsoft de un usuario, se utiliza el permiso Mail.Read. A continuación le indicamos cómo puede hacer una lista de los correos electrónicos más recientes:

var messages = await graphClient.Me.Messages
    .Request()
    .Top(10) //  Recupera los 10 primeros mensajes
    .GetAsync();
foreach (var message in messages)
{
    Console.WriteLine($"Subject: {message.Subject}");
}
var messages = await graphClient.Me.Messages
    .Request()
    .Top(10) //  Recupera los 10 primeros mensajes
    .GetAsync();
foreach (var message in messages)
{
    Console.WriteLine($"Subject: {message.Subject}");
}
Dim messages = Await graphClient.Me.Messages.Request().Top(10).GetAsync()
For Each message In messages
	Console.WriteLine($"Subject: {message.Subject}")
Next message
VB   C#

Este código enumera los asuntos de los 10 primeros correos electrónicos de la bandeja de entrada del usuario.

Enviar un correo electrónico

Enviar un correo electrónico implica crear un objeto Mensaje y enviarlo:

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"
            }
        }
    }
};
await graphClient.Me.SendMail(message, null)
    .Request()
    .PostAsync();
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"
            }
        }
    }
};
await graphClient.Me.SendMail(message, null)
    .Request()
    .PostAsync();
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"}
		}
	}
}
Await graphClient.Me.SendMail(message, Nothing).Request().PostAsync()
VB   C#

Esto envía un correo electrónico con un cuerpo de texto simple.

Gestión de eventos del calendario

Para añadir un evento al calendario del usuario:

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"
    }
};
await graphClient.Me.Events
    .Request()
    .AddAsync(@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"
    }
};
await graphClient.Me.Events
    .Request()
    .AddAsync(@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"}
}
Await graphClient.Me.Events.Request().AddAsync([event])
VB   C#

Este código programa un nuevo evento en el calendario.

Acceso a los archivos de OneDrive

Para listar archivos de la raíz del OneDrive del usuario:

var files = await graphClient.Me.Drive.Root.Children
    .Request()
    .GetAsync();
foreach (var file in files)
{
    Console.WriteLine(file.Name);
}
var files = await graphClient.Me.Drive.Root.Children
    .Request()
    .GetAsync();
foreach (var file in files)
{
    Console.WriteLine(file.Name);
}
Dim files = Await graphClient.Me.Drive.Root.Children.Request().GetAsync()
For Each file In files
	Console.WriteLine(file.Name)
Next file
VB   C#

Este código imprime los nombres de los archivos en el directorio raíz de OneDrive.

Trabajar en equipo

Para recuperar la lista de equipos de los que forma parte el usuario:

var teams = await graphClient.Me.JoinedTeams
    .Request()
    .GetAsync();
foreach (var team in teams)
{
    Console.WriteLine($"Team name: {team.DisplayName}");
}
var teams = await graphClient.Me.JoinedTeams
    .Request()
    .GetAsync();
foreach (var team in teams)
{
    Console.WriteLine($"Team name: {team.DisplayName}");
}
Dim teams = Await graphClient.Me.JoinedTeams.Request().GetAsync()
For Each team In teams
	Console.WriteLine($"Team name: {team.DisplayName}")
Next team
VB   C#

Enumera los nombres de los equipos de los que forma parte el usuario.

Cada una de estas funciones demuestra la potencia y versatilidad de MS Graph .NET. Muestran cómo puede integrar los servicios de Microsoft 365 en sus aplicaciones.

Integración de MSGraph .NET con IronPDF

MS Graph .NET (Cómo funciona para los desarrolladores): Figura 2

Si desea trabajar con archivos PDF en sus aplicaciones .NET, IronPDF es una buena elección. Se trata de una biblioteca que ofrece a sus aplicaciones la capacidad de leer, crear y manipular archivos PDF sin necesidad de otras herramientas o software PDF externos.

Caso práctico: Fusión de IronPDF con MSGraph .NET

Imagina que estás creando una aplicación que necesita obtener documentos de Microsoft 365, por ejemplo informes o facturas, y convertirlos en PDF. MSGraph .NET permite interactuar con los recursos de Microsoft 365, incluidos los archivos almacenados en OneDrive o SharePoint. IronPDF puede utilizarse entonces para tomar estos documentos y convertirlos en PDF. Esta combinación es especialmente útil para generar informes automáticamente o archivar correos electrónicos y archivos adjuntos en formato PDF para facilitar su distribución.

Ejemplo de código: De MSGraph a PDF

Veamos un ejemplo sencillo. Vamos a obtener un documento de OneDrive utilizando MSGraph .NET y luego convertir ese documento a un PDF utilizando IronPDF. Asumiré que ya has configurado tu autenticación con MSGraph; Si no, hay mucha documentación en el sitio de Microsoft para empezar.

//  Ejemplo simplificado, asegúrese de gestionar adecuadamente las excepciones y los errores.
using Microsoft.Graph;
using IronPdf;
using System.IO;
class Program
{
    static async Task Main(string [] args)
    {
        var graphClient = new GraphServiceClient(
            new DelegateAuthenticationProvider(
                async (requestMessage) =>
                {
                    //  Insertar código para adquirir el token
                    string accessToken = await GetAccessTokenAsync();
                    requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
                }));
        //  Sustituye 'itemId' por el ID de tu documento en OneDrive
        var stream = await graphClient.Me.Drive.Items ["itemId"].Content.Request().GetAsync();
        //  Configuración de IronPDF para convertir el archivo obtenido a PDF
        var renderer = new HtmlToPdf();
        var pdfDocument = renderer.RenderHtmlAsPdf(streamToString(stream));
        //  Guardar el PDF en un archivo
        pdfDocument.SaveAs("YourDocument.pdf");
    }
    static string streamToString(Stream stream)
    {
        using (var reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
        }
    }
    static async Task<string> GetAccessTokenAsync()
    {
        //  Implementa aquí tu lógica de autenticación para devolver el token de acceso
        return "your_access_token";
    }
}
//  Ejemplo simplificado, asegúrese de gestionar adecuadamente las excepciones y los errores.
using Microsoft.Graph;
using IronPdf;
using System.IO;
class Program
{
    static async Task Main(string [] args)
    {
        var graphClient = new GraphServiceClient(
            new DelegateAuthenticationProvider(
                async (requestMessage) =>
                {
                    //  Insertar código para adquirir el token
                    string accessToken = await GetAccessTokenAsync();
                    requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
                }));
        //  Sustituye 'itemId' por el ID de tu documento en OneDrive
        var stream = await graphClient.Me.Drive.Items ["itemId"].Content.Request().GetAsync();
        //  Configuración de IronPDF para convertir el archivo obtenido a PDF
        var renderer = new HtmlToPdf();
        var pdfDocument = renderer.RenderHtmlAsPdf(streamToString(stream));
        //  Guardar el PDF en un archivo
        pdfDocument.SaveAs("YourDocument.pdf");
    }
    static string streamToString(Stream stream)
    {
        using (var reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
        }
    }
    static async Task<string> GetAccessTokenAsync()
    {
        //  Implementa aquí tu lógica de autenticación para devolver el token de acceso
        return "your_access_token";
    }
}
'  Ejemplo simplificado, asegúrese de gestionar adecuadamente las excepciones y los errores.
Imports Microsoft.Graph
Imports IronPdf
Imports System.IO
Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Dim graphClient = New GraphServiceClient(New DelegateAuthenticationProvider(Async Sub(requestMessage)
					'  Insertar código para adquirir el token
					Dim accessToken As String = Await GetAccessTokenAsync()
					requestMessage.Headers.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken)
		End Sub))
		'  Sustituye 'itemId' por el ID de tu documento en OneDrive
		Dim stream = Await graphClient.Me.Drive.Items ("itemId").Content.Request().GetAsync()
		'  Configuración de IronPDF para convertir el archivo obtenido a PDF
		Dim renderer = New HtmlToPdf()
		Dim pdfDocument = renderer.RenderHtmlAsPdf(streamToString(stream))
		'  Guardar el PDF en un archivo
		pdfDocument.SaveAs("YourDocument.pdf")
	End Function
	Private Shared Function streamToString(ByVal stream As Stream) As String
		Using reader = New StreamReader(stream)
			Return reader.ReadToEnd()
		End Using
	End Function
	Private Shared Async Function GetAccessTokenAsync() As Task(Of String)
		'  Implementa aquí tu lógica de autenticación para devolver el token de acceso
		Return "your_access_token"
	End Function
End Class
VB   C#

Algunas cosas a tener en cuenta en este código:

  • Estamos utilizando MSGraph para acceder a un archivo almacenado en OneDrive. Necesitarás el ID del elemento, que puedes obtener a través de la Graph API.
  • Para este ejemplo convertimos el flujo de archivos en una cadena. Esto funciona bien para los documentos HTML. Si se trata de archivos binarios (como documentos de Word)Para convertir estos archivos a PDF, deberá utilizar un método diferente.
  • El método RenderHtmlAsPdf de IronPDF se utiliza aquí para crear un PDF a partir de una cadena HTML. Si su documento fuente no es HTML, IronPDF ofrece métodos para trabajar también con otros formatos.

    Recuerde que se trata de un ejemplo simplificado. En una aplicación del mundo real, tendrías que gestionar la autenticación de forma más robusta, gestionar los errores y, potencialmente, lidiar con diferentes formatos de archivo de forma más elegante. Pero esto debería darle un buen punto de partida para integrar MSGraph e IronPDF en sus proyectos .NET.

Conclusión

MS Graph .NET (Cómo funciona para desarrolladores): Figura 3

Para los desarrolladores que deseen integrar las funciones de Microsoft 365 en sus aplicaciones C#, el SDK .NET de MS Graph es una herramienta esencial. Empiece explorando la documentación oficial a partir de 749 dólares.

< ANTERIOR
Livecharts C# (Cómo funciona para desarrolladores)
SIGUIENTE >
C# Ref (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123