Sdílet prostřednictvím


Kurz: Volání rozhraní Microsoft Graph API z uzlu nebo webové aplikaceExpress.js

Platí pro: Zelený kruh se symbolem bílé značky zaškrtnutí, který označuje následující obsah platí pro tenanty pracovních sil. Tenanti pracovních sil zelený kruh se symbolem bílé značky zaškrtnutí, který označuje následující obsah platí pro externí tenanty. Externí tenanti (další informace)

V tomto kurzu zavoláte rozhraní Microsoft Graph API z webové aplikace Node/Express.js. Jakmile se uživatel přihlásí, aplikace získá přístupový token pro volání rozhraní Microsoft Graph API.

Tento kurz je třetí částí třídílné série kurzů.

V tomto kurzu:

  • Aktualizujte node/Express.js webovou aplikaci pro získání přístupového tokenu
  • Přístupový token použijte k volání rozhraní Microsoft Graph API.

Požadavky

Přidání komponent uživatelského rozhraní

  1. V editoru kódu otevřete soubor views/index.hbs a pak pomocí následujícího fragmentu kódu přidejte odkaz Zobrazit profil uživatele:

    <a href="/users/profile">View user profile</a>
    

    Po provedení aktualizace by soubor views/index.hbs měl vypadat podobně jako v následujícím souboru:

       <h1>{{title}}</h1>
        {{#if isAuthenticated }}
        <p>Hi {{username}}!</p>
        <a href="/users/id">View ID token claims</a>
        <br>
        <a href="/users/profile">View user profile</a>
        <br>
        <br>
        <a href="/auth/signout">Sign out</a>
        {{else}}
        <p>Welcome to {{title}}</p>
        <a href="/auth/signin">Sign in</a>
        {{/if}}
    
  2. Vytvořte views/profile.hbs soubor a přidejte následující kód:

    <h1>Microsoft Graph API</h1>
    <h3>/me endpoint response</h3>
    <table>
        <tbody>
            {{#each profile}}
            <tr>
                <td>{{@key}}</td>
                <td>{{this}}</td>
            </tr>
            {{/each}}
        </tbody>
    </table>
    <br>
    <a href="/">Go back</a>
    
    • Na této stránce se zobrazí podrobnosti profilu uživatele, které vrací rozhraní Microsoft Graph API.

Získání přístupového tokenu

V editoru kódu otevřete soubor ověřování/AuthProvider.js a pak do třídy getToken přidejte metodu AuthProvider:

class AuthProvider {
    //...
        getToken(scopes, redirectUri = "http://localhost:3000/") {
            return  async function (req, res, next) {
                const msalInstance = authProvider.getMsalInstance(authProvider.config.msalConfig);
                try {
                    msalInstance.getTokenCache().deserialize(req.session.tokenCache);
    
                    const silentRequest = {
                        account: req.session.account,
                        scopes: scopes,
                    };
                    const tokenResponse = await msalInstance.acquireTokenSilent(silentRequest);
    
                    req.session.tokenCache = msalInstance.getTokenCache().serialize();
                    req.session.accessToken = tokenResponse.accessToken;
                    next();
                } catch (error) {
                    if (error instanceof msal.InteractionRequiredAuthError) {
                        req.session.csrfToken = authProvider.cryptoProvider.createNewGuid();
    
                        const state = authProvider.cryptoProvider.base64Encode(
                            JSON.stringify({
                                redirectTo: redirectUri,
                                csrfToken: req.session.csrfToken,
                            })
                        );
                        
                        const authCodeUrlRequestParams = {
                            state: state,
                            scopes: scopes,
                        };
    
                        const authCodeRequestParams = {
                            state: state,
                            scopes: scopes,
                        };
    
                        authProvider.redirectToAuthCodeUrl(
                            req,
                            res,
                            next,
                            authCodeUrlRequestParams,
                            authCodeRequestParams,
                            msalInstance
                        );
                    }
    
                    next(error);
                }
            };
        }
}
    //...

Metoda getToken používá zadaný obor k získání přístupového tokenu.

Přidat trasu volání API

V editoru kódu otevřete soubor trasy/users.js a přidejte následující trasu:

router.get(
    "/profile",
    isAuthenticated,
    authProvider.getToken(["User.Read"]), // check if user is authenticated
    async function (req, res, next) {
    const graphResponse = await fetch(
        GRAPH_ME_ENDPOINT,
        req.session.accessToken,
    );
    if (!graphResponse.id) {
        return res 
        .status(501) 
        .send("Failed to fetch profile details"); 
    }
    res.render("profile", {
        profile: graphResponse,
    });
    },
);
  • Trasu /profile aktivujete, když uživatel zákazníka vybere odkaz Zobrazit profil uživatele. Aplikace:

    • Získá přístupový token pomocí oprávnění User.Read.
    • Volá rozhraní Microsoft Graph API ke čtení profilu přihlášeného uživatele.
    • Zobrazí podrobnosti o uživateli v uživatelském rozhraní profile.hbs.

Volání rozhraní Microsoft Graph API

Vytvořte fetch.js soubor a přidejte následující kód:

var axios = require('axios');
var authProvider = require("./auth/AuthProvider");

/**
 * Makes an Authorization "Bearer" request with the given accessToken to the given endpoint.
 * @param endpoint
 * @param accessToken
 * @param method
 */
const fetch = async (endpoint, accessToken, method = "GET", data = null) => {
    const options = {
        headers: {
            Authorization: `Bearer ${accessToken}`,
        },
    };

    console.log(`request made to ${endpoint} at: ` + new Date().toString());

    try{
        const response = await axios.get(endpoint, options);
        return await response.data;

    }catch(error){
        throw new Error(error);
    }

};

module.exports = { fetch };

Skutečné volání rozhraní API probíhá v souboru fetch.js.

Spuštění a otestování webové aplikace Node/Express.js

  1. Pomocí kroků v Spuštění a otestování webové aplikace Node/Express.js spusťte webovou aplikaci.
  2. Po přihlášení vyberte odkaz Zobrazit profil uživatele. Pokud vaše aplikace funguje správně, měli byste vidět profil přihlášeného uživatele jako přečtený z rozhraní Microsoft Graph API.