Passer au contenu du pied de page
.NET AIDE

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

MS Graph .NET sert d'outil d'accès aux données pour les interactions avec l'API Microsoft Graph, une pièce centrale de l'écosystème Azure Active Directory (Azure AD). 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 les données de divers services Microsoft. La bibliothèque cliente Microsoft Graph simplifie ce processus en fournissant un ensemble de méthodes pour interagir facilement avec l'API.

IronPDF est une bibliothèque pour générer des documents PDF dans les applications .NET. Elle convertit le HTML en PDF, la rendant utile pour créer des rapports, des factures et des documentations automatiquement. IronPDF fonctionne bien avec les applications .NET, offrant une approche simple pour la génération de PDF.

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

Commencer avec MS Graph .NET

Configurer MS Graph .NET dans les projets .NET

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

  1. Ouvrez le gestionnaire de paquets NuGet.
  2. Recherchez Microsoft.Graph.
  3. Installez le package Microsoft.Graph.

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

Ce processus ajoute MS Graph .NET à votre projet. Maintenant, vous êtes prêt à commencer à coder avec.

Un exemple de code de base

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

// 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

Ce snippet de code montre comment créer 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. Ensuite, il récupère le nom d'affichage de l'utilisateur actuel. Ensuite, assurez-vous que MS Graph .NET, ainsi que les configurations de votre fournisseur d'authentification, est ajouté à votre projet.

Fonctionnalités de MS Graph .NET

Récupérer les emails des utilisateurs

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

// 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

Ce code liste les sujets des 10 meilleurs emails dans la boîte de réception de l'utilisateur.

Envoyer un email

Envoyer un email implique de créer un objet Message et de l'envoyer :

// 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

Cela envoie un email avec un corps de texte simple.

Gérer les événements de calendrier

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

// 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

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

Accéder aux fichiers OneDrive

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

// 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

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

Travailler avec les équipes

Pour récupérer la liste des équipes auxquelles l'utilisateur appartient :

// 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

Cela liste 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égrer MS Graph .NET avec IronPDF

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

Si vous cherchez à travailler avec des PDFs dans vos applications .NET, la bibliothèque IronPDF pour les développeurs .NET est un excellent choix. C'est une bibliothèque qui donne à vos applications la capacité de lire, créer et manipuler des fichiers PDF sans avoir besoin d'autres outils ou logiciels PDF externes.

Cas d'utilisation : Fusionner IronPDF avec MS Graph .NET

Imaginez que vous construisez une application qui doit récupérer des documents de Microsoft 365, par exemple des rapports ou des factures, et les convertir en PDFs. MS Graph .NET vous permet d'interagir avec les ressources Microsoft 365, y compris les fichiers stockés dans OneDrive ou SharePoint. IronPDF peut ensuite être utilisé pour prendre ces documents et les convertir en PDFs. Cette combinaison est particulièrement utile pour la génération automatique de rapports ou l'archivage d'emails et de pièces jointes dans un format PDF pour une distribution facile.

Exemple de code : De MS Graph à PDF

Parcourons un exemple simple. Nous allons récupérer un document de OneDrive en utilisant MS Graph .NET, puis convertir ce document en PDF en utilisant IronPDF. Je vais supposer que vous avez déjà configuré votre authentification avec MS Graph ; sinon, il y a beaucoup de documentation sur le site de Microsoft pour vous aider à démarrer.

// 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

Quelques points à noter dans ce code :

  • Nous utilisons MS Graph 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.
  • Nous convertissons le flux de fichiers en chaîne pour cet exemple. Cela fonctionne bien pour les documents HTML. Si vous traitez des fichiers binaires (comme les documents Word), vous voudrez utiliser une méthode différente pour convertir ces fichiers en PDFs.
  • 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 du HTML, IronPDF offre des méthodes pour travailler avec d'autres formats également.

Rappelez-vous, il s'agit d'un exemple simplifié. Dans une application du monde réel, vous devrez gérer l'authentification de manière plus robuste, gérer les erreurs et éventuellement traiter différents formats de fichiers de manière plus élégante. Mais cela devrait vous donner un bon point de départ pour intégrer MS Graph et IronPDF dans vos projets .NET.

Conclusion

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

Pour les développeurs cherchant à intégrer les capacités de Microsoft 365 dans leurs applications C#, le MS Graph .NET SDK est un outil essentiel. Commencez par explorer les Informations sur les licences et le prix du SDK MS Graph .NET à partir de $799.

Questions Fréquemment Posées

Comment MS Graph .NET aide-t-il les développeurs à accéder aux données de Microsoft 365 ?

MS Graph .NET agit comme une passerelle permettant aux développeurs d'accéder et de gérer les données de Microsoft 365 à travers l'API Microsoft Graph, qui fait partie de l'écosystème Azure Active Directory. Il fournit des méthodes pour simplifier le processus d'interaction avec les données.

Comment les développeurs peuvent-ils générer des documents PDF en .NET en utilisant les données de Microsoft 365 ?

Les développeurs peuvent utiliser IronPDF pour générer des documents PDF dans les applications .NET en convertissant des formats HTML et d'autres documents en PDF, en tirant parti des données accessibles via MS Graph .NET.

Qu'est-ce qui est nécessaire pour commencer à utiliser MS Graph .NET dans un projet ?

Pour commencer à utiliser MS Graph .NET, vous devez installer le package Microsoft.Graph via le gestionnaire de packages NuGet et configurer l'authentification en utilisant les informations d'identification du client pour interagir avec les services Microsoft 365.

Comment un développeur peut-il envoyer un e-mail en utilisant MS Graph .NET ?

Un développeur peut envoyer un e-mail en utilisant MS Graph .NET en créant un objet `Message` avec le contenu souhaité et les détails du destinataire, puis en utilisant la méthode `SendMail` du `GraphServiceClient`.

MS Graph .NET peut-il gérer les événements de calendrier dans un compte Microsoft 365 ?

Oui, MS Graph .NET permet de gérer les événements du calendrier en créant des objets `Event` et en utilisant des méthodes comme `Me.Events.Request().AddAsync(event)` pour ajouter des événements au calendrier d'un utilisateur.

Comment convertissez-vous un document OneDrive en PDF dans une application .NET ?

Pour convertir un document OneDrive en PDF, vous pouvez utiliser MS Graph .NET pour récupérer le document, puis employer IronPDF pour convertir le contenu du document en format PDF.

Quelles considérations doivent être prises en compte lors de l'intégration de MS Graph .NET avec IronPDF ?

Lors de l'intégration de MS Graph .NET avec IronPDF, considérez une authentification robuste, la gestion des erreurs, et la compatibilité des différents formats de fichiers pour assurer une conversion et une gestion des données fluides.

Quelles sont quelques applications pratiques de l'utilisation conjointe de MS Graph .NET et IronPDF ?

L'utilisation conjointe de MS Graph .NET et IronPDF permet de créer des applications telles que la génération de rapports PDF, l'archivage des e-mails sous forme de PDF, ou la création de documents commerciaux standardisés à partir de données Microsoft 365.

Comment MS Graph .NET peut-il améliorer l'efficacité des applications .NET ?

MS Graph .NET améliore l'efficacité en fournissant un accès simplifié aux services Microsoft 365, permettant aux développeurs de récupérer, gérer et manipuler les données avec un code minimal, augmentant ainsi la productivité et la capacité des applications.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite