Snabbstart: Hämta en token och anropa Microsoft Graph API från ett Windows-skrivbordsprogram

Välkommen! Det här är förmodligen inte den sida du förväntade dig. När vi arbetar med en korrigering bör den här länken ta dig till rätt artikel:

Snabbstart: Logga in användare och anropa Microsoft Graph i en Windows-skrivbordsapp

Vi ber om ursäkt för besväret och uppskattar ditt tålamod medan vi arbetar för att få detta löst.

I den här snabbstarten laddar du ned och kör ett kodexempel som visar hur ett WPF-program (Windows Presentation Foundation) kan logga in användare och få en åtkomsttoken för att anropa Microsoft Graph API.

Se Så här fungerar exemplet för en bild.

Steg 1: Konfigurera din app i Azure-portalen

För att kodexemplet i den här snabbstarten ska fungera lägger du till en omdirigerings-URI för https://login.microsoftonline.com/common/oauth2/nativeclient och ms-appx-web://microsoft.aad.brokerplugin/{client_id}.

Already configured Programmet har konfigurerats med dessa attribut.

Steg 2: Ladda ned ditt Visual Studio-projekt

Kör projektet med Visual Studio 2019.

Dricks

För att undvika fel som orsakas av sökvägslängdsbegränsningar i Windows rekommenderar vi att du extraherar arkivet eller klonar lagringsplatsen till en katalog nära roten på enheten.

Steg 3: Din app är konfigurerad och redo att köras

Vi har konfigurerat projektet med värden för appens egenskaper och är redo att köras.

Kommentar

Enter_the_Supported_Account_Info_Here

Mer information

Så här fungerar exemplet

Shows how the sample app generated by this quickstart works

MSAL.NET

MSAL (Microsoft.Identity.Client) är det bibliotek som används för att logga in användare och begära token som används för att komma åt ett API som skyddas av Microsofts identitetsplattform. Du kan installera MSAL genom att köra följande kommando i Package Manager-konsolen i Visual Studio:

Install-Package Microsoft.Identity.Client -IncludePrerelease

MSAL-initiering

Du kan lägga till referensen för MSAL genom att lägga till följande kod:

using Microsoft.Identity.Client;

Initiera sedan MSAL med hjälp av följande kod:

IPublicClientApplication publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                .WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
                .Build();
Där: beskrivning
ClientId Är Program-ID (klient) för det program som registrerats på Azure-portalen. Du hittar det här värdet på appens översiktssida på Azure-portalen.

Begära token

MSAL har två metoder för hämtning av token: AcquireTokenInteractive och AcquireTokenSilent.

Hämta en användartoken interaktivt

Vissa situationer kräver att användarna måste interagera med Microsofts identitetsplattform via ett popup-fönster för att antingen verifiera sina autentiseringsuppgifter eller ge sitt medgivande. Vissa exempel inkluderar:

  • Första gången användaren loggar in på programmet
  • När användarna kan behöva ange sina autentiseringsuppgifter igen eftersom lösenordet har upphört att gälla
  • När programmet begär åtkomst till en resurs som användaren behöver ge sitt medgivande för
  • När tvåfaktorsautentisering krävs
authResult = await App.PublicClientApp.AcquireTokenInteractive(_scopes)
                                      .ExecuteAsync();
Där: beskrivning
_scopes Innehåller de omfång som begärs, till exempel { "user.read" } för Microsoft Graph eller { "api://<Application ID>/access_as_user" } för anpassade webb-API:er.

Hämta en token obevakat

Du vill inte kräva att användarna verifierar sina autentiseringsuppgifter varje gång de behöver komma åt en resurs. I de flesta fall vill du ha hämtning och förnyelse av token utan någon användarinteraktion. Du kan använda metoden AcquireTokenSilent för att hämta token för att komma åt skyddade resurser efter den inledande metoden AcquireTokenInteractive:

var accounts = await App.PublicClientApp.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await App.PublicClientApp.AcquireTokenSilent(scopes, firstAccount)
                                      .ExecuteAsync();
Där: beskrivning
scopes Innehåller de omfång som begärs, till exempel { "user.read" } för Microsoft Graph eller { "api://<Application ID>/access_as_user" } för anpassade webb-API:er.
firstAccount Anger den första användaren i cachen (MSAL stöder flera användare i en enda app).

Hjälp och support

Om du behöver hjälp, vill rapportera ett problem eller vill lära dig mer om dina supportalternativ kan du läsa Hjälp och support för utvecklare.

Nästa steg

Prova att använda självstudien om Windows-skrivbordet för en komplett stegvis guide till att skapa appar och nya funktioner, däribland en fullständig förklaring av den här snabbstarten.