Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
A munkaerő bérlők
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
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 )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étegbeliapp_config.ENDPOINTAPI URL-címe, és a hozzáférési jogkivonat a kérés fejlécének mezőjébenAuthorizationvan átadva.Az alsóbb rétegbeli API -nak (Microsoft Graph API) küldött sikeres kérés egy változóban
api_resulttárolt JSON-választ ad vissza, és továbbítja adisplay.htmlsablonnak 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
A terminálban futtassa a következő parancsot:
python3 -m flask run --debug --host=localhost --port=3000Használhatja a választott portot. Ennek a portnak hasonlónak kell lennie a korábban regisztrált átirányítási URI portjához.
Nyissa meg a böngészőjét, majd látogasson el a
http://localhost:3000-ra. Megjelenik egy bejelentkezési oldal.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.
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
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.
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.