Megosztás a következőn keresztül:


Oktatóanyag: A Microsoft Graph API meghívása Python Flask-webalkalmazásból

A következőkre vonatkozik: Zöld kör fehér pipa jellel a munkaerő bérlőkre vonatkozó tartalom jelölésére. A munkaerő bérlők zöld kör fehér pipa jellel a külső bérlőkre vonatkozó tartalom jelölésére. Külső bérlők (további információ)

Ebben az oktatóanyagban meghívja a Microsoft Graph API-t egy Python Flask-webalkalmazásból. Az előző oktatóanyagban hozzáadta a bejelentkezési és kijelentkezési élményt az alkalmazáshoz. Miután egy felhasználó bejelentkezett, az alkalmazás beszerez egy hozzáférési jogkivonatot a Microsoft Graph API meghívásához.

Ebben az útmutatóban Ön:

  • Meglévő Python Flask-webalkalmazás frissítése hozzáférési jogkivonat beszerzéséhez
  • A hozzáférési jogkivonat használatával hívja meg a Microsoft Graph API-t.

Előfeltételek

Kövesse az oktatóanyag lépéseit : Bejelentkezés hozzáadása Python Flask-webalkalmazáshoz a Microsoft identitásplatform használatával.

Hatókörök és API-végpontok definiálása

Ebben a példában meghívjuk a Microsoft Graph API-t a bejelentkezett felhasználó profiladatainak lekéréséhez. Ha az alkalmazás egy munkaerő-bérlőben van, bejelentkezéskor a felhasználó elfogadja az alkalmazás által a Microsoft Graph API eléréséhez szükséges hatóköröket. Ha az alkalmazás külső bérlőben található, győződjön meg arról, hogy rendszergazdai hozzájárulást ad a bérlő felhasználóinak nevében. Az alkalmazás ezután a hozzáférési jogkivonat használatával meghívja az API-t, és megjeleníti az eredményeket.

Az .env fájlban adja hozzá a meghívandó végpontot és a Microsoft Graph API meghívásához szükséges hatóköröket:

SCOPE=User.Read
ENDPOINT=https://graph.microsoft.com/v1.0/me

A app_config.py fájl frissítésével olvassa el az alkalmazás új konfigurációit.

# other configs go here
SCOPE = os.getenv("SCOPE")
ENDPOINT = os.getenv("ENDPOINT")

Védett API meghívása

  1. Adja át az API-végpontot a kezdőlapnak. Ez lehetővé teszi a végpont meghívását. Frissítse az útvonalat /, hogy az a következő kódrészletben látható módon jelenjen meg:

    @app.route("/")
    @auth.login_required
    def index(*, context):
        return render_template(
            'index.html',
            user=context['user'],
            title="Flask Web App Sample",
            api_endpoint=os.getenv("ENDPOINT") # added this line
        )
    
  2. Hívja meg a védett Microsoft Graph API-t az alábbi kódrészletben látható módon. Átadjuk az alkalmazás által használni kívánt hatókörök listáját. Ha hatókörök vannak jelen, a környezet tartalmaz egy hozzáférési tokent. A hozzáférési jogkivonat az alsóbb rétegbeli API meghívására szolgál. Adja hozzá ezt a kódot a app.py fájlhoz:

    @app.route("/call_api")
    @auth.login_required(scopes=os.getenv("SCOPE", "").split())
    def call_downstream_api(*, context):
        api_result = requests.get(  # Use access token to call a web api
            os.getenv("ENDPOINT"),
            headers={'Authorization': 'Bearer ' + context['access_token']},
            timeout=30,
        ).json() if context.get('access_token') else "Did you forget to set the SCOPE environment variable?"
        return render_template('display.html', title="API Response", result=api_result)
    

    Ha az alkalmazás sikeresen lekér egy hozzáférési jogkivonatot, http-kérést küld az alsóbb rétegbeli API-hoz a requests.get(...) metódus használatával. A kérésben meg van adva az alsóbb rétegbeli app_config.ENDPOINT API URL-címe, és a hozzáférési jogkivonat a kérés fejlécének mezőjében Authorization van átadva.

    Az alsóbb rétegbeli API -nak (Microsoft Graph API) küldött sikeres kérés egy változóban api_result tárolt JSON-választ ad vissza, és továbbítja a display.html sablonnak renderelés céljából.

API-eredmények megjelenítése

Hozzon létre egy display.html nevű fájlt a sablonok mappájában. Ezen a lapon a Microsoft Graph-végpontra irányuló hívás eredménye látható. Adja hozzá a következő kódot a display.html fájlhoz:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Microsoft Identity Python Web App: API</title>
</head>
<body>
    <a href="javascript:window.history.go(-1)">Back</a> <!-- Displayed on top of a potentially large JSON response, so it will remain visible -->
    <h1>{{title}}</h1>
    <pre>{{ result |tojson(indent=4) }}</pre> <!-- Just a generic json viewer -->
</body>
</html>

A minta webalkalmazás futtatása és tesztelése

  1. A terminálban futtassa a következő parancsot:

    python3 -m flask run --debug --host=localhost --port=3000
    

    Használhatja a választott portot. Ennek a portnak hasonlónak kell lennie a korábban regisztrált átirányítási URI portjához.

  2. Nyissa meg a böngészőjét, majd látogasson el a http://localhost:3000-ra. Megjelenik egy bejelentkezési oldal.

  3. Jelentkezzen be Microsoft-fiókjával a lépések végrehajtásával. A rendszer kéri, hogy adjon meg egy e-mail-címet és jelszót a bejelentkezéshez.

  4. Ha az alkalmazásnak bármilyen hatókörre van szüksége, megjelenik egy hozzájárulási képernyő. Az alkalmazás engedélyt kér ahhoz, hogy fenntartsa a hozzáférést azokhoz az adatokhoz, amelyekhez hozzáférést engedélyez, és be kell jelentkeznie. Válassza az Elfogadás lehetőséget. Ez a képernyő nem jelenik meg, ha nincs definiálva hatókör.

API meghívása

  1. Válassza az API meghívása hivatkozást a kezdőlapon. Az alkalmazás meghívja a Microsoft Graph API-t a bejelentkezett felhasználó profiladatainak lekéréséhez. Az alkalmazás megjeleníti az API-ra irányuló hívás eredményét.

  2. Válassza Kijelentkezés lehetőséget az alkalmazásból való kijelentkezéshez. A rendszer kéri, hogy válasszon ki egy fiókot, amelyből ki szeretne jelentkezni. Válassza ki a bejelentkezéshez használt fiókot.

Referenciaanyag

A ms_identity_python absztrahálja az MSAL könyvtár részleteit. További információ: MSAL Python dokumentációja. Ez a referenciaanyag segít megérteni, hogyan inicializálhat egy alkalmazást, és hogyan szerezhet be jogkivonatokat az MSAL Python használatával.