Condividi tramite


Esercitazione: Chiamare l'API Microsoft Graph da un'app a pagina singola React

Prima di poter interagire con l'app a pagina singola, è necessario avviare una chiamata API a Microsoft Graph e creare l'interfaccia utente per l'applicazione. Dopo l'aggiunta, è possibile accedere all'applicazione e ottenere informazioni sui dati del profilo dall'API Microsoft Graph.

Contenuto dell'esercitazione:

  • Creare la chiamata API a Microsoft Graph
  • Creare un'interfaccia utente per l'applicazione
  • Importare e usare componenti nell'applicazione
  • Creare un componente che esegue il rendering delle informazioni sul profilo dell'utente
  • Chiamare l'API dall'applicazione

Prerequisiti

Creare la chiamata API a Microsoft Graph

Per consentire all'applicazione a pagina singola di richiedere l'accesso a Microsoft Graph, è necessario aggiungere un riferimento all'oggetto graphConfig . Contiene l'endpoint dell'API REST Graph definito nel file authConfig.js .

  • Nella cartella src aprire graph.js e sostituire il contenuto del file con il frammento di codice seguente per richiedere l'accesso a Microsoft Graph.

    import { graphConfig } from "./authConfig";
    
    /**
     * Attaches a given access token to a MS Graph API call. Returns information about the user
     * @param accessToken 
     */
    export async function callMsGraph(accessToken) {
        const headers = new Headers();
        const bearer = `Bearer ${accessToken}`;
    
        headers.append("Authorization", bearer);
    
        const options = {
            method: "GET",
            headers: headers
        };
    
        return fetch(graphConfig.graphMeEndpoint, options)
            .then(response => response.json())
            .catch(error => console.log(error));
    }
    

Aggiornare le importazioni per usare i componenti nell'applicazione

Il frammento di codice seguente importa i componenti dell'interfaccia utente creati in precedenza nell'applicazione. Importa anche i componenti necessari dal @azure/msal-react pacchetto. Questi componenti verranno usati per eseguire il rendering dell'interfaccia utente e chiamare l'API.

  • Nella cartella src aprire App.jsx e sostituire il contenuto del file con il frammento di codice seguente per richiedere l'accesso.

      import React, { useState } from 'react';
    
      import { PageLayout } from './components/PageLayout';
      import { loginRequest } from './authConfig';
      import { callMsGraph } from './graph';
      import { ProfileData } from './components/ProfileData';
    
      import { AuthenticatedTemplate, UnauthenticatedTemplate, useMsal } from '@azure/msal-react';
    
      import './App.css';
    
      import Button from 'react-bootstrap/Button';
    

Aggiungere la ProfileContent funzione

La ProfileContent funzione viene usata per eseguire il rendering delle informazioni sul profilo dell'utente dopo l'accesso dell'utente. Questa funzione verrà chiamata quando l'utente seleziona il pulsante Richiedi informazioni profilo.

  • Nel file App.jsx aggiungere il codice seguente sotto le importazioni:

    /**
    * Renders information about the signed-in user or a button to retrieve data about the user
    */
    const ProfileContent = () => {
        const { instance, accounts } = useMsal();
        const [graphData, setGraphData] = useState(null);
    
        function RequestProfileData() {
            // Silently acquires an access token which is then attached to a request for MS Graph data
            instance
                .acquireTokenSilent({
                    ...loginRequest,
                    account: accounts[0],
                })
                .then((response) => {
                    callMsGraph(response.accessToken).then((response) => setGraphData(response));
                });
        }
    
        return (
            <>
                <h5 className="card-title">Welcome {accounts[0].name}</h5>
                <br/>
                {graphData ? (
                    <ProfileData graphData={graphData} />
                ) : (
                    <Button variant="secondary" onClick={RequestProfileData}>
                        Request Profile Information
                    </Button>
                )}
            </>
        );
    };
    

Aggiungere la MainContent funzione

La MainContent funzione viene usata per eseguire il rendering delle informazioni sul profilo dell'utente dopo l'accesso dell'utente. Questa funzione verrà chiamata quando l'utente seleziona il pulsante Richiedi informazioni profilo.

  • Nel file App.jsx sostituire la App() funzione con il codice seguente:

    /**
    * If a user is authenticated the ProfileContent component above is rendered. Otherwise a message indicating a user is not authenticated is rendered.
    */
    const MainContent = () => {
        return (
            <div className="App">
                <AuthenticatedTemplate>
                    <ProfileContent />
                </AuthenticatedTemplate>
    
                <UnauthenticatedTemplate>
                    <h5>
                        <center>
                            Please sign-in to see your profile information.
                        </center>
                    </h5>
                </UnauthenticatedTemplate>
            </div>
        );
    };
    
    export default function App() {
        return (
            <PageLayout>
                <center>
                    <MainContent />
                </center>
            </PageLayout>
        );
    }
    

Chiamare l'API Microsoft Graph dall'applicazione

Sono stati aggiunti tutti i frammenti di codice necessari, quindi l'applicazione può ora essere chiamata e testata in un Web browser.

  1. Passare al browser aperto in precedenza in Esercitazione: Preparare un'applicazione per l'autenticazione. Se il browser è chiuso, aprire una nuova finestra con l'indirizzo http://localhost:3000/.

  2. Per accedere, selezionare il pulsante Accedi. Ai fini di questa esercitazione, scegliere l'opzione Accedi tramite popup .

    Screenshot della finestra di accesso di React App.

  3. Dopo aver visualizzato la finestra popup con le opzioni di accesso, selezionare l'account con cui eseguire l'accesso.

    Screenshot che richiede all'utente di scegliere l'account Microsoft per l'accesso.

  4. Potrebbe essere visualizzata una seconda finestra che indica che un codice verrà inviato all'indirizzo di posta elettronica. In questo caso, selezionare Invia codice. Aprire il messaggio di posta elettronica dal team dell'account Microsoft mittente e immettere il codice a uso singolo a 7 cifre. Dopo aver immesso, selezionare Accedi.

    Screenshot che richiede all'utente di immettere il codice di verifica per l'accesso.

  5. Per Resta connesso, è possibile selezionare No o .

    Screenshot che richiede all'utente di decidere se rimanere connessi o meno.

  6. L'app richiederà ora l'autorizzazione per l'accesso e l'accesso ai dati. Selezionare Accetta per continuare.

    Screenshot che richiede all'utente di consentire all'applicazione di accedere alle autorizzazioni.

  7. L'applicazione a pagina singola visualizzerà ora un pulsante che indica Informazioni profilo richiesta. Selezionarlo per visualizzare i dati del profilo di Microsoft Graph acquisiti dall'API Microsoft Graph.

    Screenshot di React App che illustra i risultati della chiamata API.

Passaggi successivi

Informazioni su come usare Microsoft Identity Platform provando la serie di esercitazioni seguente su come creare un'API Web.