快速入門:取得權杖,並從 Windows 傳統型應用程式呼叫 Microsoft Graph API

歡迎! 這可能不是您預期的頁面。 當我們處理修正程式時,此連結應會將您導向至正確的文章:

快速入門:在 Windows 傳統型應用程式中登入使用者並呼叫 Microsoft Graph (部分機器翻譯)

當我們努力解決問題時,也對您的不便深感抱歉,並感謝您的耐心等候。

在本快速入門中,您會下載並執行程式碼範例,該範例會示範 Windows Presentation Foundation (WPF) 應用程式如何登入使用者,並取得存取權杖來呼叫 Microsoft Graph API。

如需圖例,請參閱此範例的運作方式

步驟 1:在 Azure 入口網站中設定您的應用程式

若要讓此快速入門中的程式碼範例正常運作,請將 [重新導向 URI] 新增為 https://login.microsoftonline.com/common/oauth2/nativeclientms-appx-web://microsoft.aad.brokerplugin/{client_id}

已設定 您的應用程式會使用這些屬性進行設定。

步驟 2:下載您的 Visual Studio 專案

使用 Visual Studio 2019 執行專案。

提示

為了避免 Windows 中路徑長度限制所造成的錯誤,建議您將封存解壓縮或將存放庫複製到磁碟機根目錄附近的目錄中。

步驟 3:您的應用程式已設定並準備好執行

我們已使用您的應用程式屬性值來設定您的專案,且專案已可供執行。

注意

Enter_the_Supported_Account_Info_Here

其他相關資訊

此範例的運作方式

示範本快速入門所產生之範例應用程式的運作方式

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 是註冊於 Azure 入口網站中的應用程式所具備的應用程式 (用戶端) 識別碼。 您可以在 Azure 入口網站的應用程式 [概觀] 頁面中找到此值。

要求權杖

MSAL 有兩種取得權杖的方法:AcquireTokenInteractiveAcquireTokenSilent

以互動方式取得使用者權杖

有些情況需要強制使用者透過快顯視窗與 Microsoft 身分識別平台進行互動,以驗證其認證或取得同意。 這些範例包含:

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

以無訊息方式取得使用者權杖

您不應該在每次使用者需要存取資源時都要求使用者驗證其認證。 在大部分情況下,您應該以不需要與使用者進行任何互動的方式處理權杖取得和更新作業。 在初始 AcquireTokenInteractive 方法之後,您可以使用 AcquireTokenSilent 方法取得權杖以存取受保護的資源:

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

說明與支援 

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

下一步

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