快速入門:從 通用 Windows 平台 (UWP) 應用程式呼叫 Microsoft Graph API
歡迎! 這可能不是您預期的頁面。 當我們處理修正時,此鏈接應該會帶您前往正確的文章:
我們為不便道歉,並感謝您的耐心,同時我們努力解決這個問題。
在本快速入門中,您會下載並執行程式碼範例,示範 通用 Windows 平台 (UWP) 應用程式如何登入使用者,並取得存取令牌來呼叫 Microsoft Graph API。
請參閱 範例 的運作方式以取得圖例。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- Visual Studio 2019
步驟 1:設定應用程式
若要讓本快速入門中的程式碼範例運作,請新增的https://login.microsoftonline.com/common/oauth2/nativeclient
重新導向 URI。
您的應用程式會使用這些屬性進行設定。
步驟 2:下載 Visual Studio 專案
使用 Visual Studio 2019 執行專案。
提示
若要避免 Windows 中路徑長度限制所造成的錯誤,建議您將封存盤或複製存放庫擷取到磁碟驅動器根附近的目錄。
步驟 3:您的應用程式已設定並準備好執行
我們已使用您應用程式屬性的值來設定您的專案,且已準備好執行。
步驟 4:執行應用程式
若要在本機電腦上執行範例應用程式:
在 Visual Studio 工具列中,選擇正確的平臺(可能是 x64 或 x86,而不是 ARM)。 目標裝置應從裝置變更為本機計算機。
選取 [偵錯>開始但不偵錯]。
如果系統提示您這樣做,您可能必須先啟用 開發人員模式,然後 再次啟動但不 偵錯以啟動應用程式。
當應用程式視窗出現時,您可以選取 [ 呼叫 Microsoft Graph API] 按鈕、輸入您的認證,並同意應用程式所要求的許可權。 如果成功,應用程式會顯示從呼叫 Microsoft Graph API 取得的一些令牌資訊和數據。
範例的運作方式
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
是您在 Azure 入口網站 中註冊之應用程式的應用程式(用戶端)標識碼。 您可以在應用程式[概觀] 頁面的 [Azure 入口網站 中找到此值。
要求令牌
MSAL 有兩種方法可取得 UWP 應用程式中的權杖: AcquireTokenInteractive
和 AcquireTokenSilent
。
以互動方式取得使用者令牌
在某些情況下,需要強制使用者透過彈出視窗與 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 桌面教學課程,以取得建置應用程式和新功能的完整逐步指南,包括本快速入門的完整說明。