Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
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. Enconvierte HTML a PDFpor 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.
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:
Abra el gestor de paquetes NuGet.
Busca Microsoft.Graph.
Instale el paquete Microsoft.Graph.
Este proceso añade MS Graph .NET a su proyecto. Ahora, estás listo para empezar a codificar con él.
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}!")
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.
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) // Retrieves the top 10 messages
.GetAsync();
foreach (var message in messages)
{
Console.WriteLine($"Subject: {message.Subject}");
}
var messages = await graphClient.Me.Messages
.Request()
.Top(10) // Retrieves the top 10 messages
.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
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 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()
Esto envía un correo electrónico con un cuerpo de texto simple.
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])
Este código programa un nuevo evento en el calendario.
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
Este código imprime los nombres de los archivos en el directorio raíz de OneDrive.
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
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.
Si desea trabajar con archivos PDF en sus aplicaciones .NET,la biblioteca IronPDF para desarrolladores .NET 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.
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.
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.
// Simplified example, ensure to handle exceptions and errors appropriately.
using Microsoft.Graph;
using IronPdf;
using System.IO;
class Program
{
static async Task Main(string [] args)
{
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");
}
static string streamToString(Stream stream)
{
using (var reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
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;
class Program
{
static async Task Main(string [] args)
{
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");
}
static string streamToString(Stream stream)
{
using (var reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
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
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
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
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)
' Implement your authentication logic here to return the access token
Return "your_access_token"
End Function
End Class
Algunas cosas a tener en cuenta en este código:
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.
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 laInformación sobre licencias y precios de MS Graph .NET SDK a partir de 749 dólares.
9 productos API .NET para sus documentos de oficina