SDK'ları kullanarak Microsoft Graph'i sorgulama

Tamamlandı

Microsoft Graph SDK'ları, Microsoft Graph'a erişen yüksek kaliteli, verimli ve dayanıklı uygulamalar derlemeyi basitleştirmek için tasarlanmıştır. SDK'lar iki bileşen içerir: hizmet kitaplığı ve çekirdek kitaplık.

Hizmet kitaplığı, zengin ve bulunabilir bir deneyim sağlamak için Microsoft Graph meta verilerinden oluşturulan modelleri ve istek oluşturucularını içerir.

Çekirdek kitaplık, tüm Microsoft Graph hizmetleriyle çalışmayı geliştiren bir dizi özellik sağlar. Yeniden deneme işleme, güvenli yeniden yönlendirmeler, saydam kimlik doğrulaması ve yük sıkıştırma için ekli destek, uygulamanızın Microsoft Graph ile etkileşimlerinin kalitesini artırır ve karmaşıklık eklemeden denetimi tamamen size bırakır. Çekirdek kitaplık, koleksiyonlar arasında sayfalama ve toplu istek oluşturma gibi yaygın görevler için de destek sağlar.

Bu ünitede kullanılabilir SDK'lar hakkında bilgi edinip en yaygın işlemlerden bazılarının kod örneklerini göreceksiniz.

Microsoft Graph .NET SDK'sını yükleme

Microsoft Graph .NET SDK'sı aşağıdaki NuGet paketlerine dahildir:

  • Microsoft.Graph - Uç noktaya akıcı API ile erişmek v1.0 için modelleri ve istek oluşturucularını içerir. Microsoft.Graph üzerinde bir bağımlılığı Microsoft.Graph.Corevardır.
  • Microsoft.Graph.Beta - Uç noktaya akıcı API ile erişmek beta için modelleri ve istek oluşturucularını içerir. Microsoft.Graph.Beta üzerinde bir bağımlılığı Microsoft.Graph.Corevardır.
  • Microsoft.Graph.Core - Microsoft Graph'a çağrı yapmak için temel kitaplık.

Microsoft Graph istemcisi oluşturma

Microsoft Graph istemcisi, Microsoft Graph'a çağrı yapmayı kolaylaştıracak şekilde tasarlanmıştır. Uygulamanın ömrü boyunca tek bir istemci örneği kullanabilirsiniz. Aşağıdaki kod örnekleri, Bir Microsoft Graph istemcisinin örneğinin nasıl oluşturulacağını gösterir. Kimlik doğrulama sağlayıcısı, uygulama için erişim belirteçleri alma işlemini işler. Farklı uygulama sağlayıcıları farklı istemci senaryolarını destekler. Senaryonuza uygun sağlayıcı ve seçenekler hakkında ayrıntılı bilgi için bkz . Kimlik Doğrulama Sağlayıcısı Seçme.

var scopes = new[] { "User.Read" };

// Multi-tenant apps can use "common",
// single-tenant apps must use the tenant ID from the Azure portal
var tenantId = "common";

// Value from app registration
var clientId = "YOUR_CLIENT_ID";

// using Azure.Identity;
var options = new TokenCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};

// Callback function that receives the user prompt
// Prompt contains the generated device code that you must
// enter during the auth process in the browser
Func<DeviceCodeInfo, CancellationToken, Task> callback = (code, cancellation) => {
    Console.WriteLine(code.Message);
    return Task.FromResult(0);
};

// /dotnet/api/azure.identity.devicecodecredential
var deviceCodeCredential = new DeviceCodeCredential(
    callback, tenantId, clientId, options);

var graphClient = new GraphServiceClient(deviceCodeCredential, scopes);

Microsoft Graph'tan bilgi okuma

Microsoft Graph'tan bilgi okumak için önce bir istek nesnesi oluşturmanız ve ardından istekte GET yöntemini çalıştırmanız gerekir.

// GET https://graph.microsoft.com/v1.0/me

var user = await graphClient.Me
    .GetAsync();

Varlık listesini alma

Varlıkların listesini almak, isteği yapılandırmaya yönelik başka seçenekler dışında tek bir varlığın alınmasına benzer. Sorgu $filter parametresi, sonuç kümesini yalnızca sağlanan koşulla eşleşen satırlara küçültmek için kullanılabilir. Sorgu $orderBy parametresi, sunucunun belirtilen özelliklere göre sıralanmış varlıkların listesini sağlamasını istemektedir.

// GET https://graph.microsoft.com/v1.0/me/messages?$select=subject,sender&$filter=<some condition>&orderBy=receivedDateTime

var messages = await graphClient.Me.Messages
    .Request()
    .Select(m => new {
        m.Subject,
        m.Sender
    })
    .Filter("<filter condition>")
    .OrderBy("receivedDateTime")
    .GetAsync();

Varlığı silme

Silme istekleri, bir varlığı alma istekleriyle aynı şekilde oluşturulur, ancak yerine istek DELETE GETkullanır.

// DELETE https://graph.microsoft.com/v1.0/me/messages/{message-id}

string messageId = "AQMkAGUy...";
var message = await graphClient.Me.Messages[messageId]
    .Request()
    .DeleteAsync();

Yeni varlık oluşturma

Akıcı bir stili destekleyen SDK'lar için bir yöntemle Add koleksiyonlara yeni öğeler eklenebilir. Şablon tabanlı SDK'lar için istek nesnesi bir post yöntemi kullanıma sunar.

// POST https://graph.microsoft.com/v1.0/me/calendars

var calendar = new Calendar
{
    Name = "Volunteer"
};

var newCalendar = await graphClient.Me.Calendars
    .Request()
    .AddAsync(calendar);

Diğer kaynaklar