快速入門:在 Windows 傳統型應用程式中登入使用者並呼叫 Microsoft Graph

在本快速入門中,您會下載並執行程式代碼範例,示範 Windows Presentation Foundation (WPF) 應用程式如何登入使用者,並取得存取令牌來呼叫 Microsoft Graph API。 您建置的桌面應用程式會使用授權碼流程與程式代碼交換證明金鑰 (PKCE) 標準配對。

請參閱 範例 的運作方式以取得圖例。

必要條件

註冊並下載您的快速入門應用程式

您有兩個選項可啟動快速入門應用程式:

選項 1:註冊並自動設定您的應用程式,然後下載您的程式代碼範例

  1. 移至 Microsoft Entra 系統管理中心 - 應用程式註冊 quickstart 體驗。
  2. 輸入應用程式的名稱,然後選取 [ 註冊]。
  3. 請依照指示下載並自動設定新的應用程式,只要按一下即可。

選項 2:註冊並手動設定應用程式和程式碼範例

步驟 1:註冊您的應用程式

提示

本文中的步驟可能會根據您從開始的入口網站稍有不同。

若要註冊您的應用程式,並手動將應用程式的註冊資訊新增至您的解決方案,請遵循下列步驟:

  1. 登入 Microsoft Entra 系統管理中心。
  2. 如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示,切換至您想要從 [目錄 + 訂用帳戶] 功能表註冊應用程式的租使用者。
  3. 流覽至 [身分>識別應用程式> 應用程式註冊,選取 [新增註冊]。
  4. 輸入應用程式的 [名稱],例如 Win-App-calling-MsGraph。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。
  5. 在 [支援的帳戶類型] 區段中,選取任何組織目錄中的 [帳戶] 和個人 Microsoft 帳戶(例如 Skype、Xbox、Outlook.com)。
  6. 選取 [暫存器] 以建立應用程式。
  7. 在 [管理] 底下,選取 [驗證]
  8. 選取 [新增平臺>行動和桌面應用程式]。
  9. 在 [重新導向 URI] 區段中,選取 https://login.microsoftonline.com/common/oauth2/nativeclient [自定義重新導向 URI] 中的 ms-appx-web://microsoft.aad.brokerplugin/{client_id}其中 {client_id} 是應用程式的應用程式 (用戶端) 識別碼 (出現在複選框中的msal{client_id}://auth相同 GUID)。
  10. 選取設定

步驟 2:下載專案

下載 WPF 範例應用程式

提示

若要避免 Windows 中路徑長度限制所造成的錯誤,建議您將封存盤或複製存放庫擷取到磁碟驅動器根附近的目錄。

步驟 3:設定專案

  1. 將 zip 檔案解壓縮到靠近磁碟根目錄的本機資料夾,例如 C:\Azure-Samples

  2. 在 Visual Studio 中開啟專案。

  3. 編輯 App.Xaml.cs,並以下列程式代碼取代欄位ClientIdTenant的值:

    private static string ClientId = "Enter_the_Application_Id_here";
    private static string Tenant = "Enter_the_Tenant_Info_Here";
    

其中:

  • Enter_the_Application_Id_here - 是您 註冊之應用程式的應用程式(用戶端)標識碼

    若要尋找應用程式 (用戶端) 識別碼的值,請移至 Microsoft Entra 系統管理中心的應用程式 [概觀] 頁面。

  • Enter_the_Tenant_Info_Here - 設定為下列其中一個選項:

    • 如果您的應用程式支援 此組織目錄中的帳戶,請將此值取代為 租使用者識別碼租使用者名稱 (例如,contoso.microsoft.com)

    • 如果您的應用程式支援 任何組織目錄中的帳戶,請將此值取代為 organizations

    • 如果您的應用程式支援 任何組織目錄中的帳戶和個人 Microsoft 帳戶,請將此值取代為 common

      若要尋找目錄(租使用者)標識符和支持帳戶類型的,請移至 Microsoft Entra 系統管理中心的應用程式 [概觀] 頁面。

步驟 4:執行應用程式

若要在 Visual Studio 中建置和執行範例應用程式,請選取 [偵錯] 功能表>[開始偵錯],或按 F5 鍵。 您的應用程式MainWindow隨即顯示。

當應用程式的主視窗出現時,請選取 [呼叫 Microsoft Graph API] 按鈕。 系統會提示您使用您的 Microsoft Entra 帳戶(公司或學校帳戶)或 Microsoft 帳戶(live.com、outlook.com)認證登入。

如果您第一次執行應用程式,系統會提示您同意允許應用程式存取使用者配置檔並登入。 同意要求的許可權之後,應用程式會顯示您已成功登入。 您應該會看到從呼叫 Microsoft Graph API 取得的一些基本令牌資訊和用戶數據。

其他相關資訊

範例的運作方式

Diagram showing how the sample app generated by this quickstart works.

MSAL.NET

MSAL (Microsoft.Identity.Client) 是連結庫,用來登入使用者,並要求用來存取受 Microsoft 身分識別平台 保護之 API 的令牌。 您可以在 Visual Studio 的 封裝管理員 控制台中執行下列命令來安裝 MSAL:

Install-Package Microsoft.Identity.Client -IncludePrerelease

MSAL 初始化

您可以藉由新增下列程式代碼來新增 MSAL 的參考:

using Microsoft.Identity.Client;

然後,使用下列程式代碼初始化 MSAL:

IPublicClientApplication publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                .WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
                .Build();
其中: 描述
ClientId 這是在 Microsoft Entra 系統管理中心註冊之應用程式的應用程式識別碼。 您可以在 Microsoft Entra 系統管理中心的應用程式 [概觀] 頁面中找到此值。

要求令牌

MSAL 有兩種方法可取得令牌: AcquireTokenInteractiveAcquireTokenSilent

以互動方式取得使用者令牌

在某些情況下,需要強制使用者透過彈出視窗與 Microsoft 身分識別平台 互動,以驗證其認證或同意。 這些範例包含:

  • 使用者第一次登入應用程式時
  • 當使用者可能需要重新輸入其認證時,因為密碼已過期
  • 當您的應用程式要求存取使用者需要同意的資源時
  • 需要兩個要素驗證時
authResult = await app.AcquireTokenInteractive(_scopes)
                                      .ExecuteAsync();
其中: 描述
_scopes 包含所要求的範圍,例如 { "user.read" } Microsoft Graph 或 { "api://<Application ID>/access_as_user" } 自定義 Web API。

以無訊息方式取得使用者令牌

您不想要求使用者每次需要存取資源時驗證其認證。 您大部分時間都希望令牌取得和更新,而不需要任何用戶互動。 您可以使用 AcquireTokenSilent 方法來取得權杖,以在初始 AcquireTokenInteractive 方法之後存取受保護的資源:

var accounts = await app.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await app.AcquireTokenSilent(scopes, firstAccount)
                                      .ExecuteAsync();
其中: 描述
scopes 包含所要求的範圍,例如 { "user.read" } Microsoft Graph 或 { "api://<Application ID>/access_as_user" } 自定義 Web API。
firstAccount 指定快取中的第一個使用者 (MSAL 支援單一應用程式中的多個使用者)。

說明與支援 

如果您需要協助、想要回報問題,或想要了解支援選項,請參閱 開發人員的說明和支援。

下一步

試用 Windows 桌面教學課程,以取得建置應用程式和新功能的完整逐步指南,包括本快速入門的完整說明。