Chiamare l'API Microsoft Graph da un'app Windows DesktopCall the Microsoft Graph API from a Windows Desktop app

Questa guida viene illustrato come ottenere un token di accesso e chiamare l'API di Microsoft Graph o altre API che richiedono i token di accesso da un endpoint di Azure Active Directory v2 un'applicazione nativa di Windows Desktop .NET (XAML).This guide demonstrates how a native Windows Desktop .NET (XAML) application can get an access token and call the Microsoft Graph API or other APIs that require access tokens from an Azure Active Directory v2 endpoint.

Dopo aver completato la Guida, l'applicazione sarà in grado di chiamare un'API protetta che utilizza account personali (inclusi outlook.com, live.com e altri).When you've completed the guide, your application will be able to call a protected API that uses personal accounts (including outlook.com, live.com, and others). L'applicazione verrà inoltre usare e gli account da qualsiasi società o organizzazione che usa Azure Active Directory dell'istituto di istruzione.The application will also use work and school accounts from any company or organization that uses Azure Active Directory.

Nota

La Guida richiede Visual Studio 2015 Update 3 o Visual Studio 2017.The guide requires Visual Studio 2015 Update 3 or Visual Studio 2017. Non si dispone di una di queste versioni?Don’t have either of these versions? Scaricare gratuitamente Visual Studio 2017.Download Visual Studio 2017 for free.

Come interpretare questa guidaHow this guide works

Come interpretare questa guida

L'applicazione di esempio creati in questa Guida consente a un'applicazione Desktop di Windows che esegue una query API Microsoft Graph o un'API Web che accetta i token da un endpoint di Azure Active Directory v2.The sample application that you create with this guide enables a Windows Desktop application that queries the Microsoft Graph API or a Web API that accepts tokens from an Azure Active Directory v2 endpoint. Per questo scenario, aggiungere un token per le richieste HTTP tramite l'intestazione di autorizzazione.For this scenario, you add a token to HTTP requests via the Authorization header. Libreria di autenticazione di Microsoft (MSAL) gestisce l'acquisizione del token e il rinnovo.Microsoft Authentication Library (MSAL) handles token acquisition and renewal.

Gestione dell'acquisizione di token per l'accesso ad API Web protetteHandling token acquisition for accessing protected Web APIs

Dopo che l'utente è autenticato, l'applicazione di esempio riceve un token che può essere usato per eseguire query di Microsoft Graph API o un'API Web protetta da Azure Active Directory v2.After the user is authenticated, the sample application receives a token that can be used to query Microsoft Graph API or a Web API that's secured by Azure Active Directory v2.

API, ad esempio Microsoft Graph richiedono un token per consentire l'accesso a risorse specifiche.APIs such as Microsoft Graph require a token to allow access to specific resources. Ad esempio, un token è necessario per leggere un profilo utente, del calendario dell'utente di accedere o inviare tramite posta elettronica.For example, a token is required to read a user’s profile, access a user’s calendar, or send email. L'applicazione può richiedere un token di accesso tramite MSAL per accedere a tali risorse specificando gli ambiti di API.Your application can request an access token by using MSAL to access these resources by specifying API scopes. Questo token di accesso viene quindi aggiunto all'intestazione di autorizzazione HTTP di ogni chiamata viene effettuata alla risorsa protetta.This access token is then added to the HTTP Authorization header for every call that's made against the protected resource.

MSAL gestisce la memorizzazione nella cache e aggiornando i token di accesso, in modo che l'applicazione non è necessario.MSAL manages caching and refreshing access tokens for you, so that your application doesn't need to.

Pacchetti NuGetNuGet packages

Questa guida usa i pacchetti NuGet seguenti:This guide uses the following NuGet packages:

LibreriaLibrary DESCRIZIONEDescription
Microsoft.Identity.ClientMicrosoft.Identity.Client Microsoft Authentication Library (MSAL)Microsoft Authentication Library (MSAL)

Configurare il progettoSet up your project

In questa sezione si crea un nuovo progetto per illustrare come integrare un'applicazione Desktop di Windows .NET (XAML) con Accedi con Microsoft in modo che l'applicazione può eseguire una query Web API che richiedono un token.In this section you create a new project to demonstrate how to integrate a Windows Desktop .NET application (XAML) with Sign-In with Microsoft so that the application can query Web APIs that require a token.

L'applicazione creata in questa Guida consente di visualizzare un pulsante che viene utilizzato per chiamare un grafico, un'area per visualizzare i risultati sullo schermo e un pulsante di disconnessione.The application that you create with this guide displays a button that's used to call a graph, an area to show the results on the screen, and a sign-out button.

Nota

Se invece si preferisce scaricare questo progetto Visual Studio di esempio,Prefer to download this sample's Visual Studio project instead? Scaricare un progettoe ignorare il passaggio di configurazione per configurare l'esempio di codice prima di eseguirla.Download a project, and skip to the Configuration step to configure the code sample before you execute it.

Per creare l'applicazione, eseguire le operazioni seguenti:To create your application, do the following:

  1. In Visual Studio, selezionare File > New > progetto.In Visual Studio, select File > New > Project.
  2. In modelliselezionare Visual c#.Under Templates, select Visual C#.
  3. Selezionare applicazione WPF o applicazione WPF, a seconda della versione della versione di Visual Studio in uso.Select WPF App or WPF Application, depending on the version of Visual Studio version you're using.

Aggiungere MSAL al progettoAdd MSAL to your project

  1. In Visual Studio, selezionare strumenti > Gestione pacchetti NuGet> Package Manager Console.In Visual Studio, select Tools > NuGet Package Manager> Package Manager Console.
  2. Nella finestra della Console di gestione pacchetti, incollare il seguente comando di Azure PowerShell:In the Package Manager Console window, paste the following Azure PowerShell command:

    Install-Package Microsoft.Identity.Client -Pre
    

    Nota

    Questo comando installa una libreria di autenticazione Microsoft.This command installs Microsoft Authentication Library. MSAL gestisce l'acquisizione, la memorizzazione nella cache e aggiornare i token utente che vengono utilizzati per accedere alle API che sono protetti da Azure Active Directory v2.MSAL handles acquiring, caching, and refreshing user tokens that are used to access the APIs that are protected by Azure Active Directory v2.

Aggiungere il codice per inizializzare MSALAdd the code to initialize MSAL

In questo passaggio si crea una classe per gestire l'interazione con MSAL, come la gestione dei token.In this step, you create a class to handle interaction with MSAL, such as handling of tokens.

  1. Aprire il App.xaml.cs file e quindi aggiungere il riferimento per MSAL alla classe:Open the App.xaml.cs file, and then add the reference for MSAL to the class:

    using Microsoft.Identity.Client;
    
  2. Aggiornare la classe app per le operazioni seguenti:Update the app class to the following:

    public partial class App : Application
    {
        //Below is the clientId of your app registration. 
        //You have to replace the below with the Application Id for your app registration
        private static string ClientId = "your_client_id_here";
    
        public static PublicClientApplication PublicClientApp = new PublicClientApplication(ClientId);
    
    }
    

Creare l'applicazione dell'interfaccia utenteCreate the application UI

In questa sezione viene illustrato come un'applicazione può richiedere un server back-end protetto, ad esempio Microsoft Graph.This section shows how an application can query a protected back-end server such as Microsoft Graph.

Oggetto MainWindow. XAML file deve essere creata automaticamente come parte del modello di progetto.A MainWindow.xaml file should automatically be created as a part of your project template. Aprire il file e quindi sostituire l'applicazione <griglia > nodo con il codice seguente:Open this file, and then replace your application's <Grid> node with the following code:

<Grid>
    <StackPanel Background="Azure">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
            <Button x:Name="CallGraphButton" Content="Call Microsoft Graph API" HorizontalAlignment="Right" Padding="5" Click="CallGraphButton_Click" Margin="5" FontFamily="Segoe Ui"/>
            <Button x:Name="SignOutButton" Content="Sign-Out" HorizontalAlignment="Right" Padding="5" Click="SignOutButton_Click" Margin="5" Visibility="Collapsed" FontFamily="Segoe Ui"/>
        </StackPanel>
        <Label Content="API Call Results" Margin="0,0,0,-5" FontFamily="Segoe Ui" />
        <TextBox x:Name="ResultText" TextWrapping="Wrap" MinHeight="120" Margin="5" FontFamily="Segoe Ui"/>
        <Label Content="Token Info" Margin="0,0,0,-5" FontFamily="Segoe Ui" />
        <TextBox x:Name="TokenInfoText" TextWrapping="Wrap" MinHeight="70" Margin="5" FontFamily="Segoe Ui"/>
    </StackPanel>
</Grid>

Utilizzare MSAL per ottenere un token per l'API di Microsoft GraphUse MSAL to get a token for the Microsoft Graph API

In questa sezione, utilizzare MSAL per ottenere un token per l'API di Microsoft Graph.In this section, you use MSAL to get a token for the Microsoft Graph API.

  1. Nel MainWindow.xaml.cs file, aggiungere il riferimento per MSAL alla classe:In the MainWindow.xaml.cs file, add the reference for MSAL to the class:

    using Microsoft.Identity.Client;
    
  2. Sostituire il MainWindow classe codice con quanto segue:Replace the MainWindow class code with the following:

    public partial class MainWindow : Window
    {
        //Set the API Endpoint to Graph 'me' endpoint
        string _graphAPIEndpoint = "https://graph.microsoft.com/v1.0/me";
    
        //Set the scope for API call to user.read
        string[] _scopes = new string[] { "user.read" };
    
        public MainWindow()
        {
            InitializeComponent();
        }
    
        /// <summary>
        /// Call AcquireTokenAsync - to acquire a token requiring user to sign-in
        /// </summary>
        private async void CallGraphButton_Click(object sender, RoutedEventArgs e)
        {
            AuthenticationResult authResult = null;
    
            try
            {
                authResult = await App.PublicClientApp.AcquireTokenSilentAsync(_scopes, App.PublicClientApp.Users.FirstOrDefault());
            }
            catch (MsalUiRequiredException ex)
            {
                // A MsalUiRequiredException happened on AcquireTokenSilentAsync. This indicates you need to call AcquireTokenAsync to acquire a token
                System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");
    
                try
                {
                    authResult = await App.PublicClientApp.AcquireTokenAsync(_scopes);
                }
                catch (MsalException msalex)
                {
                    ResultText.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}";
                }
            }
            catch (Exception ex)
            {
                ResultText.Text = $"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}";
                return;
            }
    
            if (authResult != null)
            {
                ResultText.Text = await GetHttpContentWithToken(_graphAPIEndpoint, authResult.AccessToken);
                DisplayBasicTokenInfo(authResult);
                this.SignOutButton.Visibility = Visibility.Visible;
            }
        }
    }
    

Altre informazioniMore information

Ottenere token un utente in modo interattivoGet a user token interactively

La chiamata di AcquireTokenAsync i metodi restituiscono in una finestra che richiede agli utenti di accedere.Calling the AcquireTokenAsync method results in a window that prompts users to sign in. In genere, le applicazioni richiedono agli utenti di accedere in modo interattivo la prima volta, che è necessario che per una risorsa protetta.Applications usually require users to sign in interactively the first time they need to access a protected resource. Sono inoltre potrebbe essere necessario eseguire l'accesso quando un'operazione invisibile all'utente di acquisire un token ha esito negativo (ad esempio, quando scade la password dell'utente).They might also need to sign in when a silent operation to acquire a token fails (for example, when a user’s password is expired).

Ottenere token un utente senza avvisareGet a user token silently

Il AcquireTokenSilentAsync metodo gestisce le acquisizioni di token e rinnovo senza alcuna interazione dell'utente.The AcquireTokenSilentAsync method handles token acquisitions and renewals without any user interaction. Dopo aver AcquireTokenAsync viene eseguita per la prima volta, AcquireTokenSilentAsync è il metodo normale da utilizzare per ottenere i token di accesso alle risorse protette per le chiamate successive, in quanto le chiamate a richiedere o rinnovare token vengono eseguite automaticamente.After AcquireTokenAsync is executed for the first time, AcquireTokenSilentAsync is the usual method to use to obtain tokens that access protected resources for subsequent calls, because calls to request or renew tokens are made silently.

Infine, il AcquireTokenSilentAsync metodo avrà esito negativo.Eventually, the AcquireTokenSilentAsync method will fail. Le cause di errore potrebbero essere che l'utente è disconnesso o modificare la password in un altro dispositivo.Reasons for failure might be that the user has either signed out or changed their password on another device. Se MSAL rileva che il problema può essere risolto richiedendo un'azione interattiva, viene attivata un'eccezione MsalUiRequiredException.When MSAL detects that the issue can be resolved by requiring an interactive action, it fires an MsalUiRequiredException exception. L'applicazione può gestire questa eccezione in due modi:Your application can handle this exception in two ways:

  • È possibile effettuare una chiamata su AcquireTokenAsync immediatamente.It can make a call against AcquireTokenAsync immediately. Questa chiamata comporta chiedere conferma all'utente di accedere.This call results in prompting the user to sign in. Questo modello è in genere utilizzato nelle applicazioni in linea in cui è presente alcun contenuto non in linea disponibile per l'utente.This pattern is usually used in online applications where there is no available offline content for the user. Il codice di esempio generato da questa installazione guidata segue questo modello, che è possibile visualizzare in tempo azione prima che eseguire l'esempio.The sample generated by this guided setup follows this pattern, which you can see in action the first time you execute the sample.

    • Poiché nessun utente ha usato l'applicazione, PublicClientApp.Users.FirstOrDefault() contiene un valore null e un MsalUiRequiredException viene generata un'eccezione.Because no user has used the application, PublicClientApp.Users.FirstOrDefault() contains a null value, and an MsalUiRequiredException exception is thrown.
    • Il codice nell'esempio viene quindi gestita l'eccezione chiamando AcquireTokenAsync, dando luogo a chiedere conferma all'utente di accedere.The code in the sample then handles the exception by calling AcquireTokenAsync, which results in prompting the user to sign in.
  • Invece può presentare un'indicazione visiva agli utenti un accesso aggiuntivo interattivo è necessario, in modo che possono selezionare giunto il momento di eseguire l'accesso.It can instead present a visual indication to users that an interactive sign-in is required, so that they can select the right time to sign in. O l'applicazione può ripetere AcquireTokenSilentAsync in un secondo momento.Or the application can retry AcquireTokenSilentAsync later. Questo modello viene spesso utilizzato quando gli utenti possono usare altre funzionalità delle applicazioni senza interruzioni, ad esempio, quando il contenuto non in linea è disponibile nell'applicazione.This pattern is frequently used when users can use other application functionality without disruption--for example, when offline content is available in the application. In questo caso, gli utenti possono decidere quando desiderano accedere per accedere alla risorsa protetta o aggiornare le informazioni obsolete.In this case, users can decide when they want to sign in to either access the protected resource or refresh the outdated information. In alternativa, l'applicazione può decidere di ripetere AcquireTokenSilentAsync quando la rete viene ripristinata dopo essere state temporaneamente non disponibile.Alternatively, the application can decide to retry AcquireTokenSilentAsync when the network is restored after having been temporarily unavailable.

Chiamare l'API Graph Microsoft utilizzando il token che è stata ottenutaCall the Microsoft Graph API by using the token you just obtained

Aggiungere il seguente nuovo metodo per il MainWindow.xaml.cs.Add the following new method to your MainWindow.xaml.cs. Il metodo viene utilizzato per rendere un GET richiesta sull'API Graph con un'intestazione di autorizzazione:The method is used to make a GET request against Graph API by using an Authorize header:

/// <summary>
/// Perform an HTTP GET request to a URL using an HTTP Authorization header
/// </summary>
/// <param name="url">The URL</param>
/// <param name="token">The token</param>
/// <returns>String containing the results of the GET operation</returns>
public async Task<string> GetHttpContentWithToken(string url, string token)
{
    var httpClient = new System.Net.Http.HttpClient();
    System.Net.Http.HttpResponseMessage response;
    try
    {
        var request = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Get, url);
        //Add the token in Authorization header
        request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
        response = await httpClient.SendAsync(request);
        var content = await response.Content.ReadAsStringAsync();
        return content;
    }
    catch (Exception ex)
    {
        return ex.ToString();
    }
}

Altre informazioni sull'esecuzione di una chiamata REST a un'API protettaMore information about making a REST call against a protected API

In questa applicazione di esempio, utilizzare il GetHttpContentWithToken metodo HTTP per GET richiesta su una risorsa protetta che richiede un token e quindi restituire il contenuto al chiamante.In this sample application, you use the GetHttpContentWithToken method to make an HTTP GET request against a protected resource that requires a token and then return the content to the caller. Questo metodo aggiunge il token acquisito nell'intestazione di autorizzazione HTTP.This method adds the acquired token in the HTTP Authorization header. Per questo esempio, la risorsa è l'API di Microsoft Graph me endpoint, che visualizza informazioni sul profilo dell'utente.For this sample, the resource is the Microsoft Graph API me endpoint, which displays the user's profile information.

Aggiungere un metodo per disconnettersi da un utenteAdd a method to sign out a user

Per disconnettersi da un utente, aggiungere il metodo seguente per il MainWindow.xaml.cs file:To sign out a user, add the following method to your MainWindow.xaml.cs file:

/// <summary>
/// Sign out the current user
/// </summary>
private void SignOutButton_Click(object sender, RoutedEventArgs e)
{
    if (App.PublicClientApp.Users.Any())
    {
        try
        {
            App.PublicClientApp.Remove(App.PublicClientApp.Users.FirstOrDefault());
            this.ResultText.Text = "User has signed-out";
            this.CallGraphButton.Visibility = Visibility.Visible;
            this.SignOutButton.Visibility = Visibility.Collapsed;
        }
        catch (MsalException ex)
        {
            ResultText.Text = $"Error signing-out user: {ex.Message}";
        }
    }
}

Ulteriori informazioni sulla disconnessione utenteMore information about user sign-out

Il SignOutButton_Click metodo rimuove gli utenti dalla cache utente MSAL, che indica in modo efficace MSAL dimenticare l'utente corrente in modo che una richiesta futura per acquisire un token avrà esito positivo solo se viene resa a essere interattive.The SignOutButton_Click method removes users from the MSAL user cache, which effectively tells MSAL to forget the current user so that a future request to acquire a token will succeed only if it is made to be interactive.

Anche se l'applicazione in questo esempio supporta utenti singoli, MSAL supporta scenari in cui può essere firmato in più account nello stesso momento.Although the application in this sample supports single users, MSAL supports scenarios where multiple accounts can be signed in at the same time. Un esempio è un'applicazione di posta elettronica in cui un utente dispone di più account.An example is an email application where a user has multiple accounts.

Visualizzare informazioni sul token di baseDisplay basic token information

Per visualizzare le informazioni di base del token, aggiungere il metodo seguente al MainWindow.xaml.cs file:To display basic information about the token, add the following method to your MainWindow.xaml.cs file:

/// <summary>
/// Display basic information contained in the token
/// </summary>
private void DisplayBasicTokenInfo(AuthenticationResult authResult)
{
    TokenInfoText.Text = "";
    if (authResult != null)
    {
        TokenInfoText.Text += $"Name: {authResult.User.Name}" + Environment.NewLine;
        TokenInfoText.Text += $"Username: {authResult.User.DisplayableId}" + Environment.NewLine;
        TokenInfoText.Text += $"Token Expires: {authResult.ExpiresOn.ToLocalTime()}" + Environment.NewLine;
        TokenInfoText.Text += $"Access Token: {authResult.AccessToken}" + Environment.NewLine;
    }
}

Altre informazioniMore information

Oltre al token di accesso utilizzato per chiamare l'API di Microsoft Graph, dopo l'utente esegue l'accesso in, MSAL ottiene anche un ID token.In addition to the access token that's used to call the Microsoft Graph API, after the user signs in, MSAL also obtains an ID token. Questo token contiene un piccolo subset delle informazioni relative agli utenti.This token contain a small subset of information that's pertinent to users. Il DisplayBasicTokenInfo metodo visualizza le informazioni di base contenuta nel token.The DisplayBasicTokenInfo method displays the basic information that's contained in the token. Ad esempio, Visualizza nome visualizzato dell'utente e ID, nonché la data di scadenza del token e la stringa che rappresenta il token di accesso stesso.For example, it displays the user's display name and ID, as well as the token expiration date and the string representing the access token itself. È possibile selezionare il chiamare API di Microsoft Graph pulsante più volte e vedere che è stato riutilizzato lo stesso token per le richieste successive.You can select the Call Microsoft Graph API button multiple times and see that the same token was reused for subsequent requests. Se MSAL decide che è il momento di rinnovare il token, è possibile anche vedere la data di scadenza estesa.You can also see the expiration date being extended when MSAL decides it is time to renew the token.

Registrare l'applicazioneRegister your application

È possibile registrare l'applicazione in uno dei due modi.You can register your application in either of two ways.

Opzione 1: Modalità ExpressOption 1: Express mode

Rapidamente, è possibile registrare l'applicazione nel modo seguente:You can quickly register your application by doing the following:

  1. Passare al portale di registrazione applicazione Microsoft.Go to the Microsoft Application Registration Portal.

  2. Selezionare aggiungere un'app.Select Add an app.

  3. Nel nome applicazione , immettere un nome per l'applicazione.In the Application Name box, enter a name for your application.

  4. Verificare che il impostazione guidata casella di controllo è selezionata, quindi fare clic crea.Ensure that the Guided Setup check box is selected, and then select Create.

  5. Seguire le istruzioni per ottenere l'ID dell'applicazione e incollarlo nel codice.Follow the instructions for obtaining the application ID, and paste it into your code.

Opzione 2: La modalità avanzataOption 2: Advanced mode

Per registrare l'applicazione e aggiungere le informazioni di registrazione dell'applicazione alla soluzione, eseguire le operazioni seguenti:To register your application and add your application registration information to your solution, do the following:

  1. Se è ancora stato già registrato nell'applicazione, passare al portale di registrazione dell'applicazione Microsoft.If you haven't already registered your application, go to the Microsoft Application Registration Portal.

  2. Selezionare aggiungere un'app.Select Add an app.

  3. Nel nome applicazione , immettere un nome per l'applicazione.In the Application Name box, enter a name for your application.

  4. Verificare che il impostazione guidata casella di controllo è deselezionata e quindi selezionare crea.Ensure that the Guided Setup check box is cleared, and then select Create.

  5. Selezionare aggiungere piattaformaselezionare applicazione nativa, quindi selezionare salvare.Select Add Platform, select Native Application, and then select Save.

  6. Nel ID applicazione casella, copiare il GUID.In the Application ID box, copy the GUID.

  7. Passare a Visual Studio, aprire il App.xaml.cs file e quindi sostituire your_client_id_here con l'ID dell'applicazione che è stato appena registrato e copiato.Go to Visual Studio, open the App.xaml.cs file, and then replace your_client_id_here with the application ID that you just registered and copied.

    private static string ClientId = "your_application_id_here";
    

Testare il codiceTest your code

Per eseguire il progetto, in Visual Studio selezionare F5.To run your project, in Visual Studio, select F5. Viene visualizzata l'applicazione MainWindow, come mostrato di seguito:Your application MainWindow is displayed, as shown here:

Testare l'applicazione

Alla prima esecuzione dell'applicazione, quando si seleziona il pulsante Call Microsoft Graph API (Chiama API Microsoft Graph), viene richiesto l'accesso.The first time that you run the application and select the Call Microsoft Graph API button, you're prompted to sign in. Usare un account Azure Active Directory (aziendale o dell'istituto di istruzione) o un account Microsoft (live.com, outlook.com) per eseguire il test.Use an Azure Active Directory account (work or school account) or a Microsoft account (live.com, outlook.com) to test it.

Accedere all'applicazione

Al primo accesso all'applicazione viene richiesto anche di specificare il consenso per permettere all'applicazione di accedere al profilo e di completare l'accesso per l'utente, come mostrato di seguito:The first time that you sign in to your application, you're also prompted to provide consent to allow the application to access your profile and sign you in, as shown here:

Specificare il consenso per l'accesso all'applicazione

Visualizzare i risultati dell'applicazioneView application results

Dopo l'accesso dovrebbero essere visualizzate le informazioni sul profilo utente restituite dalla chiamata all'API Microsoft Graph .After you sign in, you should see the user profile information that's returned by the call to the Microsoft Graph API. I risultati vengono visualizzati nella casella API Call Results (Risultati della chiamata API).The results are displayed in the API Call Results box. Le informazioni di base sul token acquisito tramite la chiamata a AcquireTokenAsync o AcquireTokenSilentAsync dovrebbero essere visibili nella casella Token Info (Info sul token).Basic information about the token that was acquired via the call to AcquireTokenAsync or AcquireTokenSilentAsync should be visible in the Token Info box. I risultati contengono le proprietà seguenti:The results contain the following properties:

ProprietàProperty FormatFormat DESCRIZIONEDescription
NomeName Nome e cognome dell'utenteUser's full name Nome e cognome dell'utente.The user’s first and last name.
Nome utenteUsername user@domain.com Nome utente usato per identificare l'utente.The username that is used to identify the user.
Token Expires (Scadenza token)Token Expires DatetimeDateTime Ora in cui scadrà il token.The time at which the token expires. MSAL estende la data di scadenza rinnovando il token in base alla necessità.MSAL extends the expiration date by renewing the token as necessary.
Token di accessoAccess Token stringString Stringa di token inviata alle richieste HTTP che necessitano di un'Intestazione dell'autorizzazione.The token string that is sent to HTTP requests that require an Authorization header.

Altre informazioni sugli ambiti e sulle autorizzazioni delegateMore information about scopes and delegated permissions

L'API Microsoft Graph richiede l'ambito user.read per leggere il profilo dell'utente.The Microsoft Graph API requires the user.read scope to read a user's profile. Per impostazione predefinita, questo ambito viene aggiunto automaticamente in ogni applicazione registrata nel portale di registrazione dell'applicazione.This scope is automatically added by default in every application that's registered in the Application Registration Portal. Altre API per Microsoft Graph e le API personalizzate per il server di back-end potrebbero richiedere anche altri ambiti.Other APIs for Microsoft Graph, as well as custom APIs for your back-end server, might require additional scopes. L'API Microsoft Graph richiede l'ambito Calendars.Read per elencare i calendari dell'utente.The Microsoft Graph API requires the Calendars.Read scope to list the user’s calendars.

Per accedere ai calendari dell'utente nel contesto di un'applicazione, aggiungere l'autorizzazione delegata Calendars.Read alle informazioni di registrazione dell'applicazione.To access the user’s calendars in the context of an application, add the Calendars.Read delegated permission to the application registration information. Aggiungere quindi l'ambito Calendars.Read alla chiamata acquireTokenSilent.Then, add the Calendars.Read scope to the acquireTokenSilent call.

Nota

Con l'aumentare del numero di ambiti è possibile che all'utente venga chiesto di esprimere anche altri tipi di consenso.The user might be prompted for additional consents as you increase the number of scopes.

Guida e supportoHelp and support

Se è necessaria assistenza, se si vuole segnalare un problema o si vogliono ottenere altre informazioni sulle opzioni di supporto, vedere l'articolo seguente:If you need help, want to report an issue, or want to learn more about your support options, see the following article: