Dela via


Självstudie: Anropa Microsoft Graph-API:et från en React-app med en enda sida

Innan vi kan interagera med ensidesappen (SPA) måste vi initiera ett API-anrop till Microsoft Graph och skapa användargränssnittet för programmet. När detta har lagts till kan vi logga in på programmet och hämta profildatainformation från Microsoft Graph-API:et.

I den här självstudien:

  • Skapa API-anropet till Microsoft Graph
  • Skapa ett användargränssnitt för programmet
  • Importera och använda komponenter i programmet
  • Skapa en komponent som återger användarens profilinformation
  • Anropa API:et från programmet

Förutsättningar

Skapa API-anropet till Microsoft Graph

För att spa-avdelningen ska kunna begära åtkomst till Microsoft Graph måste en referens till graphConfig objektet läggas till. Detta innehåller Graph REST API-slutpunkten som definierats i authConfig.js fil.

  • I mappen src öppnar du graph.js och ersätter innehållet i filen med följande kodfragment för att begära åtkomst till 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));
    }
    

Uppdatera importer för att använda komponenter i programmet

Följande kodfragment importerar de gränssnittskomponenter som skapades tidigare till programmet. Den importerar också nödvändiga komponenter från @azure/msal-react paketet. Dessa komponenter används för att återge användargränssnittet och anropa API:et.

  • I mappen src öppnar du App.jsx och ersätter innehållet i filen med följande kodfragment för att begära åtkomst.

      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';
    

ProfileContent Lägg till funktionen

Funktionen ProfileContent används för att återge användarens profilinformation när användaren har loggat in. Den här funktionen anropas när användaren väljer knappen Begär profilinformation .

  • I filen App.jsx lägger du till följande kod under dina importer:

    /**
    * 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>
                )}
            </>
        );
    };
    

MainContent Lägg till funktionen

Funktionen MainContent används för att återge användarens profilinformation när användaren har loggat in. Den här funktionen anropas när användaren väljer knappen Begär profilinformation .

  • I filen App.jsx ersätter du App() funktionen med följande kod:

    /**
    * 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>
        );
    }
    

Anropa Microsoft Graph-API:et från programmet

Alla nödvändiga kodfragment har lagts till, så programmet kan nu anropas och testas i en webbläsare.

  1. Navigera till webbläsaren som tidigare öppnats i Självstudie: Förbereda ett program för autentisering. Om webbläsaren är stängd öppnar du ett nytt fönster med adressen http://localhost:3000/.

  2. Välj knappen Logga in. I den här självstudien väljer du alternativet Logga in med popup-fönster .

    Skärmbild av React App-inloggningsfönstret.

  3. När popup-fönstret visas med inloggningsalternativen väljer du det konto som du vill logga in med.

    Skärmbild där användaren uppmanas att välja Microsoft-konto att logga in på.

  4. Ett andra fönster kan visas som anger att en kod skickas till din e-postadress. Om detta händer väljer du Skicka kod. Öppna e-postmeddelandet från avsändarens Microsoft-kontoteam och ange den sjusiffriga engångskoden. När du har angett väljer du Logga in.

    Skärmbild där användaren uppmanas att ange verifieringskod för inloggning.

  5. För Håll dig inloggad kan du välja Antingen Nej eller Ja.

    Skärmbild där användaren uppmanas att bestämma om han eller hon ska vara inloggad eller inte.

  6. Appen ber nu om behörighet att logga in och komma åt data. Välj Acceptera för att fortsätta.

    Skärmbild där användaren uppmanas att tillåta att programmet får åtkomst till behörigheter.

  7. SPA visar nu en knapp med texten Begär profilinformation. Välj den för att visa Microsoft Graph-profildata som hämtats från Microsoft Graph-API:et.

    Skärmbild av React App som visar resultatet av API-anropet.

Nästa steg

Lär dig hur du använder Microsofts identitetsplattform genom att prova följande självstudieserie om hur du skapar ett webb-API.