Altbilgi içeriğine atla
.NET YARDıM

MS Graph .NET (Geliştiriciler için Nasıl Çalışır)

MS Graph .NET, Azure Active Directory (Azure AD) ekosisteminin merkezi bir parçası olan Microsoft Graph API'si ile etkileşimler için bir erişim veri aracıdır. Microsoft Graph, Microsoft 365'teki veri ve zekaya açılan bir kapıdır. Geliştiricilerin çeşitli Microsoft hizmetlerindeki verileri erişmesi, yönetmesi ve analiz etmesine olanak tanır. Microsoft Graph istemci kütüphanesi, API ile kolayca etkileşimde bulunmak için bir dizi yöntem sağlayarak bu süreci basitleştirir.

IronPDF, .NET uygulamalarında PDF belgeleri oluşturmak için bir kütüphanedir. HTML'yi PDF'ye dönüştürür, böylece raporlar, faturalar ve belgeleri otomatik olarak oluşturmak için kullanışlı olur. IronPDF, .NET uygulamalarıyla iyi çalışır ve PDF üretimi için basit bir yaklaşım sunar.

MS Graph .NET ve IronPDF'i birleştirerek geliştiricilere Microsoft 365 verilerini manipüle edebilen ve PDF belgeleri üretebilen uygulamalar oluşturma olanağı sağlar. Bu kombinasyon, Microsoft hizmetlerinden veri gerektiren ve bu verileri standart bir belge formatında sunması gereken iş uygulamaları geliştirmek için güçlüdür.

MS Graph .NET ile Başlarken

.NET Projelerinde MS Graph .NET Ayarlama

Özellikle .NET Core projelerinde kullanıcı kimlikleri ile çalışırken MS Graph .NET'i etkin bir şekilde kullanmak için .NET projenizi ayarlamak ilk adımdır. İşte adımlar:

  1. NuGet Paket Yöneticisi'ni açın.
  2. Microsoft.Graph aramasını yapın.
  3. Microsoft.Graph paketini yükleyin.

MS Graph .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 1

Bu süreç, projenize MS Graph .NET'i ekler. Şimdi, onunla kodlamaya başlamaya hazırsınız.

Temel Bir Kod Örneği

Diyelim ki mevcut kullanıcının profil bilgilerini almak istiyorsunuz. İşte basit bir kod örneği:

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

Bu kod parçacığı, Azure AD kimlik doğrulaması için bir istemci sırrı kullanarak GraphServiceClient yeni bir örnek oluşturmayı gösterir. Kimliği doğrulamak için istemci kimlik bilgilerini kullanır. Daha sonra, mevcut kullanıcının görüntüleme adını alır. Bu işlemi takiben, MS Graph .NET'in, kimlik doğrulama sağlayıcı yapılandırmalarınızla birlikte projenize eklendiğinden emin olun.

MS Graph .NET Özellikleri

Kullanıcı E-postalarını Alma

Bir kullanıcının Microsoft hesap posta kutusundan e-postaları almak için Mail.Read iznini kullanırsınız. İşte en son e-postaları nasıl listeleyebileceğiniz:

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

Bu kod, kullanıcının gelen kutusundaki en üstteki 10 e-posta başlığını listeler.

Bir E-posta Gönder

Bir e-posta göndermek, bir Mesaj nesnesi oluşturmayı ve göndermeyi içerir:

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

Bu, basit bir metin gövdesiyle bir e-posta gönderir.

Takvim Etkinliklerini Yönetme

Kullanıcının takvimine bir etkinlik eklemek için:

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

Bu kod, takvimde yeni bir etkinlik planlar.

OneDrive Dosyalarına Erişim

Kullanıcının OneDrive'ının kökünden dosyaları listelemek için:

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

Bu kod, OneDrive kök dizinindeki dosyaların isimlerini yazdırır.

Takımlarla Çalışma

Kullanıcının bir parçası olduğu takımların listesini almak için:

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

Bu, kullanıcının bir parçası olduğu Takımların isimlerini listeler.

Bu özelliklerin her biri, MS Graph .NET'in gücünü ve çok yönlülüğünü gösterir. Microsoft 365 servislerini uygulamalarınıza entegre etme yollarını gösterirler.

MS Graph .NET'i IronPDF ile Entegre Etme

MS Graph .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 2

Eğer .NET uygulamalarınızda PDF'lerle çalışmak istiyorsanız, .NET Geliştiricileri İçin IronPDF Kütüphanesi sağlam bir tercihtir. Bu kütüphane, uygulamalarınıza başka bir harici PDF aracı veya yazılımına ihtiyaç duymadan PDF dosyalarını okuma, oluşturma ve işleme yeteneği kazandırır.

Kullanım Durumu: IronPDF'i MS Graph .NET ile Birleştirme

Microsoft 365'ten, örneğin raporlar veya faturalar gibi belgeleri çekip bunları PDF'lere dönüştürmeniz gereken bir uygulama oluşturduğunuzu hayal edin. MS Graph .NET, OneDrive veya SharePoint'te saklanan dosyalar dahil olmak üzere Microsoft 365 kaynaklarıyla etkileşimde bulunmanıza olanak tanır. IronPDF daha sonra bu belgeleri alıp PDF'lere dönüştürmek için kullanılabilir. Bu kombinasyon, özellikle otomatik rapor üretimi veya e-postaların ve eklerin PDF formatında arşivlenmesi için kolay dağıtım amaçlı kullanılabilir.

Kod Örneği: MS Graph'tan PDF'e

Basit bir örnek üzerinden geçelim. OneDrive'dan MS Graph .NET kullanarak bir belge alacağız ve ardından IronPDF kullanarak bu belgeyi bir PDF'ye dönüştüreceğiz. MSGraph ile kimlik doğrulamanızı zaten ayarladığınızı varsayıyorum; eğer ayarlamadıysanız, başlamak için Microsoft'un web sitesinde bolca belge var.

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

Bu kodda dikkat edilmesi gereken birkaç şey:

  • OneDrive'da saklanan bir dosyaya erişmek için MSGraph'i kullanıyoruz. Bu işlem için Graph API aracılığıyla elde edebileceğiniz öğenin kimliğine ihtiyaçınız var.
  • Bu örnek için dosya akışını bir dizeye dönüştürüyoruz. Bu, HTML belgeleri için iyi çalışır. Word belgeleri gibi ikili dosyalarla uğraşıyorsanız, bu dosyaları PDF'ye dönüştürmenin farklı bir yöntemi gerekecek.
  • IronPDF'deki RenderHtmlAsPdf yöntemi burada bir HTML dizisinden PDF oluşturmak için kullanılır. Kaynak belgeniz HTML değilse, IronPDF'in diğer formatlarla çalışmak için de sunduğu yöntemler vardır.

Unutmayın, bu basitleştirilmiş bir örnektir. Gerçek bir dünya uygulamasında, daha sağlam bir şekilde kimlik doğrulama, hataları yönetme ve farklı dosya formatlarıyla daha nazikçe başa çıkmanız gerekebilir. Ancak bu, .NET projelerinizde MSGraph ve IronPDF'i entegre etmeniz için iyi bir başlangıç noktası olmalıdır.

Sonuç

MS Graph .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 3

C# uygulamalarına Microsoft 365 yeteneklerini entegre etmek isteyen geliştiriciler için, MS Graph .NET SDK vazgeçilmez bir araçtır. MS Graph .NET SDK Lisanslama ve Fiyatlandırma Bilgilerini $799'da incelemeye başlayın.

Sıkça Sorulan Sorular

MS Graph .NET, geliştiricilerin Microsoft 365 verilerine erişmelerine nasıl yardımcı olur?

MS Graph .NET, geliştiricilere, Azure Active Directory ekosisteminin bir parçası olan Microsoft Graph API aracılığıyla Microsoft 365 verilerine erişim ve yönetim imkanı sunar. Verilerin etkileşim sürecini kolaylaştıracak yöntemler sağlar.

Geliştiriciler Microsoft 365 verilerini kullanarak .NET içinde PDF belgeleri nasıl oluşturabilir?

Geliştiriciler, MS Graph .NET aracılığıyla erişilen verilerden yararlanarak HTML ve diğer belge formatlarını PDF'lere dönüştürerek, .NET uygulamalarında PDF belgeleri oluşturmak için IronPDF kullanabilirler.

Bir projede MS Graph .NET'i kullanmaya başlamak için ne gereklidir?

MS Graph .NET'i kullanmaya başlamak için NuGet Paket Yöneticisi ile Microsoft.Graph paketini kurmanız ve Microsoft 365 hizmetleriyle etkileşime geçmek için istemci kimlik bilgilerini kullanarak kimlik doğrulama ayarlamanız gereklidir.

Bir geliştirici MS Graph .NET kullanarak nasıl e-posta gönderebilir?

Bir geliştirici, MS Graph .NET kullanarak `Message` nesnesi ile istenen içerik ve alıcı bilgilerini girip, ardından `GraphServiceClient`'in `SendMail` yöntemini kullanarak e-posta gönderebilir.

MS Graph .NET, bir Microsoft 365 hesabındaki takvim olaylarını yönetebilir mi?

Evet, MS Graph .NET, bir kullanıcının takvimine olay eklemek için `Event` nesneleri oluşturma ve `Me.Events.Request().AddAsync(event)` gibi yöntemleri kullanma yoluyla takvim olaylarını yönetmeye olanak tanır.

Bir .NET uygulamasında OneDrive belgesini PDF'ye nasıl dönüştürürsünüz?

Bir OneDrive belgesini PDF'ye dönüştürmek için MS Graph .NET ile belgeyi getirip, ardından belge içeriğini PDF formatına dönüştürmek için IronPDF'i kullanabilirsiniz.

MS Graph .NET'in IronPDF ile entegrasyonu sırasında dikkate alınması gerekenler nelerdir?

MS Graph .NET ile IronPDF'i entegre ederken, sağlam bir kimlik doğrulama, hata yönetimi ve farklı dosya formatlarının uyumluluğu gibi unsurları dikkate alarak sorunsuz bir dönüşüm ve veri yönetimi sağlanmasına dikkat edilmelidir.

MS Graph .NET ve IronPDF'i birlikte kullanmanın bazı pratik uygulamaları nelerdir?

MS Graph .NET ve IronPDF'i birlikte kullanmak, PDF raporları oluşturma, e-postaları PDF olarak arşivleme veya Microsoft 365 verilerinden standart iş belgeleri oluşturma gibi uygulamalara olanak tanır.

MS Graph .NET, .NET uygulamalarının verimliliğini nasıl artırabilir?

MS Graph .NET, Microsoft 365 hizmetlerine kolay erişim imkanı sağlayarak, geliştiricilerin verileri minimum kodla alma, yönetme ve işleme yeteneğini artırarak, üretkenliği ve uygulama kapasitesini artırarak verimliliği yükseltir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara