Поделиться через


Краткое руководство: Получение токена и вызов API Microsoft Graph из настольного приложения Windows

Добро пожаловать! Это, вероятно, не страница, которую вы ожидали. Пока мы работаем над исправлением, эта ссылка должна привести вас к нужной статье.

Быстрый старт: Вход пользователей и вызов Microsoft Graph в настольном приложении Windows

Приносим извинения за неудобства и благодарим за терпение! Мы работаем над устранением этой проблемы.

В этом кратком руководстве вы скачаете и запустите пример кода, демонстрирующий, как приложение Windows Presentation Foundation (WPF) может войти в систему и получить маркер доступа для вызова API Microsoft Graph.

Иллюстрацию см. в разделе Как работает этот пример.

Шаг 1. Настройка приложения на портале Azure

Чтобы пример кода в этом кратком руководстве работал, добавьте URI перенаправленияhttps://login.microsoftonline.com/common/oauth2/nativeclient и ms-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) — это библиотека, используемая для входа в систему пользователей и запроса токенов, используемых для доступа к API, защищенному платформой удостоверений Microsoft. 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. Это значение можно найти на странице приложения Обзор на портале Azure.

Запрос токенов

MSAL имеет два метода получения маркеров: AcquireTokenInteractive и AcquireTokenSilent.

Интерактивное получение пользовательского токена

В некоторых ситуациях требуется принудительное взаимодействие пользователей с платформой удостоверений Майкрософт через всплывающее окно для проверки учетных данных или предоставления согласия. Ниже приведены некоторые примеры:

  • При первом входе пользователей в приложение
  • когда пользователям может потребоваться повторно ввести учетные данные, так как истек срок действия пароля;
  • Когда приложение запрашивает доступ к ресурсу, которому пользователь должен предоставить согласие
  • Если требуется двухфакторная проверка подлинности
authResult = await App.PublicClientApp.AcquireTokenInteractive(_scopes)
                                      .ExecuteAsync();
Где: Описание
_scopes Содержит запрашиваемые области, например { "user.read" } для Microsoft Graph или { "api://<Application ID>/access_as_user" } для пользовательских веб-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" } для пользовательских веб-API.
firstAccount Указывает первого пользователя в кэше (MSAL поддерживает несколько пользователей в одном приложении).

Помощь и поддержка

Если вам нужна помощь, хотите сообщить о проблеме или узнать о доступных вариантах поддержки, см. статью Помощь и поддержка для разработчиков.

Дальнейшие шаги

Попробуйте учебник для рабочего стола Windows, чтобы получить полное пошаговое руководство по созданию приложений и новых функций, включая полное объяснение этого быстрого старта.