Compartilhar via


Tutorial: Chamar a API do Microsoft Graph de um aplicativo de página única do React

Antes de poder interagir com o aplicativo de página única (SPA), precisamos iniciar uma chamada à API para o Microsoft Graph e criar a interface do usuário (UI) para o aplicativo. Depois que isso for adicionado, podemos entrar no aplicativo e obter informações de dados de perfil da API do Microsoft Graph.

Neste tutorial:

  • Criar a chamada à API ao Microsoft Graph
  • Criar uma interface do usuário para o aplicativo
  • Importar e usar componentes no aplicativo
  • Criar um componente que renderiza as informações do perfil do usuário
  • Chamar a API do aplicativo

Pré-requisitos

Criar a chamada à API ao Microsoft Graph

Para permitir que o SPA solicite acesso ao Microsoft Graph, uma referência ao objeto graphConfig precisa ser adicionada. Isso contém o ponto de extremidade da API REST do Graph definido no arquivo authConfig.js.

  • Na pasta src, abra o graph.js e substitua os conteúdos do arquivo pelo snippet de código a seguir para solicitar acesso ao 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));
    }
    

Atualizar importações para usar componentes no aplicativo

O snippet de código a seguir importa os componentes da interface do usuário que já foram criados para o aplicativo. Isso também importa os componentes exigidos pelo pacote @azure/msal-react. Tais componentes serão usados para renderizar a interface do usuário e chamar a API.

  • Na pasta src, abra o App.jsx e substitua os conteúdos do arquivo pelo snippet de código a seguir para solicitar acesso.

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

Adicione a função ProfileContent

A função ProfileContent é usada para renderizar as informações do perfil do usuário depois do usuário se conectar. Essa função será chamada quando o usuário selecionar o botão Solicitar informações de perfil.

  • No arquivo App.jsx, adicione o seguinte código abaixo de suas importações:

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

Adicione a função MainContent

A função MainContent é usada para renderizar as informações do perfil do usuário depois do usuário se conectar. Essa função será chamada quando o usuário selecionar o botão Solicitar informações de perfil.

  • No arquivo App.jsx, substitua a função App() pelo código a seguir:

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

Chamar a API do Microsoft Graph a partir do aplicativo

Todos os snippets de código necessários foram adicionados, portanto, o aplicativo agora pode ser chamado e testado em um navegador da Web.

  1. Navegue até o navegador aberto anteriormente no Tutorial: preparar um aplicativo para autenticação. Se o navegador estiver fechado, abra uma nova janela com o endereço http://localhost:3000/.

  2. Selecione o botão Entrar. Para os fins desse tutorial, escolha a opção Entrar usando Pop-up.

    Captura de tela da janela de entrada do Aplicativo React.

  3. Depois que a janela pop-up for exibida com as opções de entrada, selecione a conta com a qual deseja entrar.

    Captura de tela solicitando que o usuário escolha a conta Microsoft para entrar.

  4. Uma segunda janela pode aparecer indicando que um código será enviado para seu endereço de email. Se isso acontecer, selecione Enviar código. Abra o email da equipe da conta Microsoft do remetente e insira o código de uso único de 7 dígitos. Depois de inserido, selecione Entrar.

    Captura de tela solicitando que o usuário insira o código de verificação para entrar.

  5. Para Permanecer conectado, selecione Não ou Sim.

    Captura de tela solicitando que o usuário decida se deseja permanecer conectado ou não.

  6. O aplicativo agora solicitará permissão para entrar e acessar dados. Selecione Aceitar para continuar.

    Captura de tela solicitando que o usuário permita que o aplicativo acesse as permissões.

  7. O SPA agora exibirá um botão informando Informações do Perfil de Solicitação. Selecione-o para exibir os dados de perfil do Microsoft Graph adquiridos da API do Microsoft Graph.

    Captura de tela do Aplicativo React descrevendo os resultados da chamada à API.

Próximas etapas

Saiba como usar a plataforma de identidade da Microsoft experimentando a série de tutoriais a seguir sobre como compilar uma API Web.