使用 SDK 查詢 Microsoft Graph

已完成

Microsoft Graph SDK 的設計目的是簡化建置可存取 Microsoft Graph 的高品質、有效率且可復原的應用程式。 SDK 包含兩個元件:服務程式庫和核心程式庫。

服務程式庫包含從 Microsoft Graph 中繼資料產生的模型和要求建立器,以提供豐富且可探索的體驗。

核心程式庫提供一組功能,可增強使用所有 Microsoft Graph 服務。 重試處理、安全重新導向、透明驗證和承載壓縮的內嵌支援,可提升應用程式與 Microsoft Graph 互動的品質,非但不會增加複雜性,同時讓您完全掌控。 核心程式庫也支援一般工作,例如對集合進行分頁和建立批次要求。

在本單元中,您將了解可用的 SDK,並查看一些最常見作業的程式碼範例。

注意

本單元中的程式碼範例是以 Microsoft Graph .NET SDK 5.65 版為基礎。

安裝 Microsoft Graph .NET SDK

Microsoft Graph .NET SDK 包含在下列 NuGet 套件中:

  • Microsoft.Graph - 包含使用 Fluent API 存取 v1.0 端點的模型和要求建立器。 Microsoft.Graph 具有 Microsoft.Graph.Core 的相依性。
  • Microsoft.Graph.Beta - 包含使用 Fluent API 存取 beta 端點的模型和要求建立器。 Microsoft.Graph.Beta 具有 Microsoft.Graph.Core 的相依性。
  • Microsoft.Graph.Core - 用於呼叫 Microsoft Graph 的核心程式庫。

建立 Microsoft Graph 用戶端

Microsoft Graph 用戶端的設計目的是讓您更容易呼叫 Microsoft Graph。 您可以在應用程式的存留期內使用單一用戶端執行個體。 以下範例程式碼示範了如何建立 Microsoft Graph 用戶端執行個體。 驗證提供者會負責取得應用程式的存取權杖。 不同的應用程式提供者支援不同的用戶端案例。 如需深入了解您的案例適用的提供者和選項,請參閱選擇驗證提供者

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 讀取資訊

若要從 Microsoft Graph 讀取資訊,您必須先建立要求物件,然後在要求上執行 GET 方法。

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

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

擷取實體清單

擷取實體清單與擷取單一實體類似,但有其他的要求設定選項。 $filter 查詢參數可用來將結果集縮減為僅符合所提供條件的資料列。 $orderBy 查詢參數會要求伺服器提供依指定屬性排序的實體清單。

// GET https://graph.microsoft.com/v1.0/me/messages?
// $select=subject,sender&$filter=subject eq 'Hello world'
var messages = await graphClient.Me.Messages
    .GetAsync(requestConfig =>
    {
        requestConfig.QueryParameters.Select =
            ["subject", "sender"];
        requestConfig.QueryParameters.Filter =
            "subject eq 'Hello world'";
    });

刪除實體

刪除要求的建構方式與擷取實體要求相同,但使用 DELETE 要求取代 GET

// DELETE https://graph.microsoft.com/v1.0/me/messages/{message-id}
// messageId is a string containing the id property of the message
await graphClient.Me.Messages[messageId]
    .DeleteAsync();

建立新實體

對於 Fluent 樣式和範本型 SDK,可使用 POST 方法將新項目新增至集合。

// POST https://graph.microsoft.com/v1.0/me/calendars
var calendar = new Calendar
{
    Name = "Volunteer",
};

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

其他資源