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

歡迎! 這可能不是您預期的頁面。 當我們處理修正時,此鏈接應該會帶您前往正確的文章:

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

我們為不便道歉,並感謝您的耐心,同時我們努力解決這個問題。

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

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

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

若要讓本快速入門中的程式碼範例能夠運作,請新增ms-appx-web://microsoft.aad.brokerplugin/{client_id}https://login.microsoftonline.com/common/oauth2/nativeclient重新導向 URI

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

步驟 2:下載 Visual Studio 專案

使用 Visual Studio 2019 執行專案。

提示

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

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

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

注意

Enter_the_Supported_Account_Info_Here

其他相關資訊

範例的運作方式

Shows 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 這是應用程式在 Azure 入口網站 中註冊的應用程式標識碼。 您可以在應用程式[概觀] 頁面的 [Azure 入口網站 中找到此值。

要求令牌

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

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

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

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

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

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

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

說明與支援 

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

下一步

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