Compartir vía


Tutorial: Llamada a Microsoft Graph API desde una aplicación de página única de React

Antes de poder interactuar con la aplicación de página única (SPA) es necesario iniciar una llamada API a Microsoft Graph y crear la interfaz de usuario (UI) para la aplicación. Después de agregar esto, podremos iniciar sesión en la aplicación y obtener información de datos de perfil de Microsoft Graph API.

En este tutorial:

  • Creación de la llamada API a Microsoft Graph
  • Creación de una interfaz de usuario para la aplicación
  • Importación y uso de componentes en la aplicación
  • Crear un componente que represente la información del perfil del usuario
  • Llamada a la API desde la aplicación

Prerrequisitos

Creación de la llamada API a Microsoft Graph

Para permitir que la SPA solicite acceso a Microsoft Graph, será necesario agregar una referencia al objeto graphConfig. Contiene el punto de conexión de la API de REST de Graph definido en el archivo authConfig.js.

  • En la carpeta src, abra graph.js y sustituya el contenido del archivo por el siguiente fragmento de código para solicitar acceso 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));
    }
    

Actualización de importaciones para usar componentes en la aplicación

El siguiente fragmento de código importa los componentes de la interfaz de usuario que se crearon anteriormente en la aplicación. También importa los componentes necesarios del paquete @azure/msal-react. Estos componentes se usarán para representar la interfaz de usuario y llamar a la API.

  • En la carpeta src, abra App.jsx y sustituya el contenido del archivo por el siguiente fragmento de código para solicitar acceso.

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

Adición de la función ProfileContent

La función ProfileContent se usa para representar la información del perfil del usuario después de que el usuario haya iniciado sesión. Se llamará a esta función cuando el usuario seleccione el botón Solicitar información sobre el perfil.

  • En el archivo App.jsx, agregue el código siguiente debajo de las importaciones:

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

Adición de la función MainContent

La función MainContent se usa para representar la información del perfil del usuario después de que el usuario haya iniciado sesión. Se llamará a esta función cuando el usuario seleccione el botón Solicitar información sobre el perfil.

  • En el archivo App.jsx, reemplace la función App() por el código siguiente:

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

Llamada a Microsoft Graph API desde la aplicación

Se han agregado todos los fragmentos de código necesarios, por lo que la aplicación ahora se podrá llamar y probar en un explorador web.

  1. Vaya al explorador abierto anteriormente en el tutorial: preparación de una aplicación para la autenticación. Si el explorador estuviera cerrado, abra una nueva ventana con la dirección http://localhost:3000/.

  2. Haga clic en el botón Iniciar sesión. Para los fines de este tutorial, elija la opción Iniciar sesión con el elemento emergente.

    Captura de pantalla de la ventana de inicio de sesión de la aplicación React.

  3. Después de que aparezca la ventana emergente con las opciones de inicio de sesión, seleccione la cuenta con la que quiera iniciar sesión.

    Captura de pantalla que solicita al usuario que elija la cuenta Microsoft en la que iniciar sesión.

  4. Podría aparecer una segunda ventana indicando que se enviará un código a su dirección de correo electrónico. Si esto sucediera, seleccione Enviar código. Abra el correo electrónico del remitente equipo de cuentas Microsoft, e introduzca el código de un solo uso de 7 dígitos. Una vez introducido, seleccione Guardar.

    Captura de pantalla que solicita al usuario que escriba el código de verificación para iniciar sesión.

  5. En Mantener sesión iniciada, puede seleccionar No o .

    Captura de pantalla que pide al usuario que decida si desea mantener la sesión iniciada o no.

  6. La aplicación ahora solicitará permiso para iniciar sesión y acceder a los datos. Seleccione Aceptar para continuar.

    Captura de pantalla que solicita al usuario que permita que la aplicación acceda a los permisos.

  7. La SPA mostrará ahora un botón indicando Solicitar información de perfil. Selecciónelo para mostrar los datos de perfil de Microsoft Graph adquiridos en Microsoft Graph API.

    Captura de pantalla de la aplicación React que muestra los resultados de la llamada API.

Pasos siguientes

Aprenda a usar la plataforma de identidad de Microsoft probando la siguiente serie de tutoriales sobre cómo crear una API web.