クイック スタート:Windows デスクトップ アプリからトークンを取得し、Microsoft Graph API を呼び出す

ようこそ。 ご要望のページを表示できません。 問題の修正に取り組んでいますが、次のリンクから目的の記事にアクセスできるかお試しください。

クイック スタート: ユーザーがサインインして web API を呼び出す Windows Presentation Foundation (WPF) のデスクトップ アプリ

ご不便をおかけして申し訳ありませんが、問題が解決するまで今しばらくお待ちください。

このクイックスタートでは、Windows Presentation Foundation (WPF) アプリケーションでユーザーをサインインし、アクセス トークンを取得して Microsoft Graph API を呼び出す方法を示すコード サンプルをダウンロードして実行します。

図については、「このサンプルのしくみ」を参照してください。

手順 1:Azure portal でのアプリケーションの構成

このクイックスタートのコード サンプルを動作させるには、リダイレクト URI (https://login.microsoftonline.com/common/oauth2/nativeclient および ms-appx-web://microsoft.aad.brokerplugin/{client_id}) を追加します。

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 ID プラットフォームによって保護されている API へのアクセス用のトークンを要求するために使用するライブラリです。 MSAL は、Visual Studio の "パッケージ マネージャー コンソール" で次のコマンドを実行してインストールできます。

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 portal に登録されているアプリケーションの "アプリケーション (クライアント) ID"。 この値は、Azure portal のアプリの [概要] ページで確認できます。

トークンの要求

MSAL には、トークンの取得に使用する 2 つのメソッド AcquireTokenInteractiveAcquireTokenSilent があります。

ユーザー トークンを対話形式で取得する

ユーザーは Microsoft ID プラットフォームの操作を強制される場合があります。その場合、各自の資格情報の検証または同意を行うポップアップ ウィンドウが表示されます。 次に例をいくつか示します。

  • ユーザーが初めてアプリケーションにサインインした場合
  • パスワードの有効期限が切れているため、ユーザーが資格情報を再入力する必要がある場合
  • ご使用のアプリケーションが、ユーザーによる同意が必要なリソースへのアクセスを要求している場合
  • 2 要素認証が必須である場合
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 は、1 つのアプリで複数のユーザーをサポート)。

ヘルプとサポート

サポートが必要な場合、問題をレポートする場合、またはサポート オプションについて知りたい場合は、開発者向けのヘルプとサポートに関するページを参照してください。

次のステップ

アプリケーションや新機能の構築についての完全なステップ バイ ステップ ガイドは、Windows デスクトップ チュートリアルをお試しください。このクイック スタートの完全な説明も含まれています。