AIDE .NET

MS Graph .NET (Comment ça marche pour les développeurs)

Publié avril 29, 2024
Partager:

MS Graph .NET sert d'outil de données d'accès pour les interactions avec l'API Microsoft Graph, un élément central de Azure Active Directory(Azure AD) l'écosystème. Microsoft Graph est une passerelle vers les données et l'intelligence dans Microsoft 365. Il permet aux développeurs d'accéder, de gérer et d'analyser des données à travers divers services Microsoft. La bibliothèque client Microsoft Graph simplifie ce processus en fournissant un ensemble de méthodes permettant d'interagir facilement avec l'API.

IronPDF est une bibliothèque permettant de générer des documents PDF dans les applications .NET. Ilconvertit HTML en PDFil est donc utile pour créer automatiquement des rapports, des factures et de la documentation. IronPDF fonctionne bien avec les applications .NET, offrant une approche directe de la génération de PDF.

La combinaison de MS Graph .NET et d'IronPDF permet aux développeurs de créer des applications capables de manipuler les données de Microsoft 365 et de produire des documents PDF. Cette combinaison est puissante pour le développement d'applications professionnelles qui nécessitent des données provenant de services Microsoft et qui doivent présenter ces données dans un format de document standardisé.

Premiers pas avec MS Graph .NET

Mise en place de MS Graph .NET dans les projets .NET

Pour utiliser efficacement MS Graph .NET, notamment lorsque vous travaillez avec des identifiants d'utilisateur dans des projets .NET Core, la configuration de votre projet .NET constitue la première étape. Voici les étapes à suivre :

  1. Ouvrez le gestionnaire de paquets NuGet.

  2. Rechercher Microsoft.Graph.

  3. Installez le paquet Microsoft.Graph.

    MS Graph .NET(Comment ça marche pour les développeurs) : Figure 1

    Ce processus ajoute MS Graph .NET à votre projet. Vous êtes maintenant prêt à commencer à coder avec.

Un exemple de code de base

Supposons que vous souhaitiez récupérer les informations relatives au profil de l'utilisateur actuel. Voici un exemple de code simple :

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#

Cet extrait de code démontre la création d'une nouvelle instance de GraphServiceClient, en utilisant un secret client pour l'authentification Azure AD. Il utilise les informations d'identification du client pour s'authentifier. Il récupère ensuite le nom d'affichage de l'utilisateur actuel. En suivant les extraits de code suivants, assurez-vous que MS Graph .NET, ainsi que les configurations de votre fournisseur d'authentification, sont ajoutés à votre projet.

Caractéristiques de MS Graph .NET

Récupérer les courriels des utilisateurs

Pour récupérer les messages électroniques de la boîte aux lettres du compte Microsoft d'un utilisateur, vous utilisez l'autorisation Mail.Read. Voici comment vous pouvez dresser la liste des courriels les plus récents :

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
VB   C#

Ce code énumère les sujets des 10 premiers courriels de la boîte de réception de l'utilisateur.

Envoyer un courriel

L'envoi d'un courrier électronique implique la création d'un objet Message et son envoi :

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#

Cela permet d'envoyer un courrier électronique contenant un simple texte.

Gestion des événements du calendrier

Pour ajouter un événement au calendrier de l'utilisateur :

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#

Ce code planifie un nouvel événement dans le calendrier.

Accès aux fichiers OneDrive

Pour lister les fichiers à partir de la racine du OneDrive de l'utilisateur :

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#

Ce code imprime les noms des fichiers dans le répertoire racine de OneDrive.

Travailler avec des équipes

Récupérer la liste des équipes dont l'utilisateur fait partie :

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#

Cette liste énumère les noms des équipes dont l'utilisateur fait partie.

Chacune de ces fonctionnalités démontre la puissance et la polyvalence de MS Graph .NET. Ils montrent comment vous pouvez intégrer les services Microsoft 365 dans vos applications.

Intégration de MSGraph .NET avec IronPDF for .NET

MS Graph .NET(Comment ça marche pour les développeurs) : Figure 2

Si vous souhaitez travailler avec des PDF dans vos applications .NET,la bibliothèque IronPDF pour les développeurs .NET est un choix solide. Il s'agit d'une bibliothèque qui permet à vos applications de lire, de créer et de manipuler des fichiers PDF sans avoir besoin d'autres outils ou logiciels PDF externes.

Cas d'utilisation : Fusionner IronPDF avec MSGraph .NET

Imaginez que vous construisiez une application qui doit récupérer des documents de Microsoft 365, par exemple des rapports ou des factures, et les convertir en PDF. MSGraph .NET vous permet d'interagir avec les ressources de Microsoft 365, notamment les fichiers stockés dans OneDrive ou SharePoint. IronPDF peut alors être utilisé pour prendre ces documents et les convertir en PDF. Cette combinaison est particulièrement utile pour la génération automatisée de rapports ou l'archivage de courriels et de pièces jointes au format PDF en vue d'une distribution aisée.

Exemple de code : De MSGraph à PDF

Prenons un exemple simple. Nous allons récupérer un document depuis OneDrive à l'aide de MSGraph .NET, puis convertir ce document en PDF à l'aide d'IronPDF. Je suppose que vous avez déjà mis en place votre authentification avec MSGraph ; si ce n'est pas le cas, vous trouverez sur le site de Microsoft une documentation abondante pour vous aider à démarrer.

// 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
VB   C#

Quelques points à noter dans ce code :

  • Nous utilisons MSGraph pour accéder à un fichier stocké dans OneDrive. Vous aurez besoin de l'identifiant de l'élément, que vous pouvez obtenir via l'API Graph.
  • Dans cet exemple, nous convertissons le flux de fichiers en chaîne de caractères. Cela fonctionne bien pour les documents HTML. Si vous avez affaire à des fichiers binaires(comme les documents Word)vous devrez utiliser une autre méthode pour convertir ces fichiers en PDF.
  • La méthode RenderHtmlAsPdf d'IronPDF est utilisée ici pour créer un PDF à partir d'une chaîne HTML. Si votre document source n'est pas HTML, IronPDF propose des méthodes pour travailler avec d'autres formats.

    N'oubliez pas qu'il s'agit d'un exemple simplifié. Dans une application réelle, vous devriez gérer l'authentification de manière plus robuste, gérer les erreurs et éventuellement traiter les différents formats de fichiers de manière plus gracieuse. Mais cela devrait vous donner un bon point de départ pour intégrer MSGraph et IronPDF dans vos projets .NET.

Conclusion

MS Graph .NET(Comment ça marche pour les développeurs) : Figure 3

Pour les développeurs qui cherchent à intégrer les fonctionnalités de Microsoft 365 dans leurs applications C#, le SDK MS Graph .NET est un outil essentiel. Commencez par explorer lesInformations sur les licences et les prix de MS Graph .NET SDK à partir de 749 $.

< PRÉCÉDENT
Livecharts C# (Comment ça marche pour les développeurs)
SUIVANT >
C# Ref (Comment ça marche pour les développeurs)