快速入門:在 通用 Windows 平台 應用程式中登入使用者並呼叫 Microsoft Graph

在本快速入門中,您會下載並執行程式碼範例,示範 通用 Windows 平台 (UWP) 應用程式如何登入使用者,並取得存取令牌來呼叫 Microsoft Graph API。

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

必要條件

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

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

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

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

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

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

提示

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

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

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

步驟 2:下載專案

下載 UWP 範例應用程式

提示

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

步驟 3:設定專案

  1. 將 .zip 封存解壓縮到靠近磁碟驅動器根目錄的本機資料夾。 例如,進入 C:\Azure-Samples

  2. 在 Visual Studio 中開啟專案。 如果出現提示,請安裝 通用 Windows 平台 開發工作負載和任何個別 SDK 元件。

  3. 在MainPage.Xaml.cs 中,將變數的值ClientId變更為您稍早註冊之應用程式的Application (Client) 識別碼

    private const string ClientId = "Enter_the_Application_Id_here";
    

    您可以在 Microsoft Entra 系統管理中心(身分識別>應用程式> 應用程式註冊>{您的應用程式註冊})的 [應用程式概觀] 窗格中找到應用程式用戶端) 識別碼。

  4. 建立並選取套件的新自我簽署測試憑證:

    1. 方案總管 中,按兩下 Package.appxmanifest 檔案。
    2. 選取 [封裝>選擇憑證...>建立...
    3. 輸入密碼,然後選取 [ 確定]。 系統會建立名為 Native_UWP_V2_TemporaryKey.pfx 的憑證。
    4. 選取 [確定] 以關閉 [選擇憑證] 對話框,然後確認您在 方案總管 中看到 Native_UWP_V2_TemporaryKey.pfx
    5. 方案總管 中,以滑鼠右鍵按兩下Native_UWP_V2項目,然後選取 [屬性]。
    6. 選取 [簽署],然後選取您在 [選擇強名稱密鑰檔案] 下拉式清單中建立的 .pfx。

步驟 4:執行應用程式

若要在本機電腦上執行範例應用程式:

  1. 在 Visual Studio 工具列中,選擇正確的平臺(可能是 x64x86,而不是 ARM)。 目標裝置應從裝置變更為本機計算機

  2. 選取 [偵錯>開始但不偵錯]。

    如果系統提示您這樣做,您可能必須先啟用 開發人員模式,然後 再次啟動但不 偵錯以啟動應用程式。

當應用程式視窗出現時,您可以選取 [ 呼叫 Microsoft Graph API] 按鈕、輸入您的認證,並同意應用程式所要求的許可權。 如果成功,應用程式會顯示從呼叫 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

MSAL 初始化

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

using Microsoft.Identity.Client;

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

public static IPublicClientApplication PublicClientApp;
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                                                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                                                    .Build();

的值 ClientId您在 Microsoft Entra 系統管理中心註冊之應用程式的應用程式識別碼 。 您可以在 Microsoft Entra 系統管理中心的應用程式 [概觀] 頁面中找到此值。

要求令牌

MSAL 有兩種方法可取得 UWP 應用程式中的權杖: AcquireTokenInteractiveAcquireTokenSilent

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

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

  • 第一次登入應用程式的使用者
  • 當使用者可能需要重新輸入其認證時,因為密碼已過期
  • 當您的應用程式要求存取資源時,用戶必須同意
  • 需要兩個要素驗證時
authResult = await PublicClientApp.AcquireTokenInteractive(scopes)
                      .ExecuteAsync();

參數 scopes 包含所要求的範圍,例如 { "user.read" } Microsoft Graph 或 { "api://<Application ID>/access_as_user" } 自定義 Web API。

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

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

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

說明與支援 

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

下一步

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