Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: 
Externa klienter (läs mer)
I den här handledningen anropar du Microsoft Graph API från en Python Flask-webbapplikation. I den tidigare handledningenlade du till inloggnings- och utloggningsfunktionerna i programmet. När en användare loggar in hämtar appen en åtkomsttoken för att anropa Microsoft Graph API.
I den här handledningen:
- Uppdatera en befintlig Python Flask-webbapp för att hämta en åtkomsttoken
- Använd åtkomsttoken för att anropa Microsoft Graph API.
Förutsättningar
Slutför stegen i Självstudie: Lägg till inloggning i en Python Flask-webbapp med hjälp av Microsofts identitetsplattform.
Definiera omfång och API-slutpunkt
I det här exemplet anropar vi Microsoft Graph API för att hämta den inloggade användarens profilinformation. Om din app finns i en klientorganisation för personal vid inloggning samtycker användaren till de omfång som krävs av appen för att få åtkomst till Microsoft Graph-API:et. Om din app finns i en extern klientorganisation kontrollerar du att du bevilja administratörsmedgivande åt användare i din klientorganisation. Appen använder sedan åtkomsttoken för att anropa API:et och visa resultatet.
I din .env-fil lägger du till slutpunkten vi anropar och de omfång som krävs för att anropa Microsoft Graph API.
SCOPE=User.Read
ENDPOINT=https://graph.microsoft.com/v1.0/me
Läs de nya konfigurationerna i din app genom att uppdatera filen app_config.py.
# other configs go here
SCOPE = os.getenv("SCOPE")
ENDPOINT = os.getenv("ENDPOINT")
Anropa ett skyddat API
Skicka API-slutpunkten till startsidan. På så sätt kan du anropa slutpunkten. Uppdatera den
/-rutten så att den ser ut som i följande kodfragment.@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 )Anropa det skyddade Microsoft Graph-API:et enligt följande kodfragment. Vi skickar listan över omfång som vår app behöver använda. Om det finns scopes innehåller kontexten en åtkomsttoken. Åtkomsttoken används för att anropa det underordnade API:et. Lägg till den här koden i app.py-filen:
@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)Om appen hämtar en åtkomsttoken gör den en HTTP-begäran till det underordnade API:et med hjälp av metoden
requests.get(...). I begäran anges vår underordnade API-URL iapp_config.ENDPOINToch åtkomsttoken skickas i fältetAuthorizationi begärandehuvudet.En lyckad begäran till det underordnade API:et (Microsoft Graph API) returnerar ett JSON-svar som lagras i en
api_resultvariabel och skickas tilldisplay.html-mallen för återgivning.
Visa API-resultat
Skapa en fil med namnet display.html i mappen mallar. Den här sidan visar resultatet av anropet till Microsoft Graph-slutpunkten. Lägg till följande kod i filen display.html:
<!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>
Köra och testa exempelwebbappen
Kör följande kommando i terminalen:
python3 -m flask run --debug --host=localhost --port=3000Du kan använda valfri port. Den här porten bör likna porten för den omdirigerings-URI som du registrerade tidigare.
Öppna webbläsaren och gå sedan till
http://localhost:3000. Du ser en inloggningssida.Logga in med ditt Microsoft-konto genom att följa stegen. Du uppmanas att ange en e-postadress och ett lösenord för att logga in.
Om det finns några omfång som krävs av applikationen visas en samtyckessida. Programmet begär behörighet att behålla åtkomsten till data som du tillåter åtkomst till och för att logga in dig. Välj Acceptera. Den här skärmen visas inte om inga omfång har definierats.
Anrops-API
Välj länken Anropa ett API på startsidan. Appen anropar Microsoft Graph API för att hämta den inloggade användarens profilinformation. Appen visar resultatet av anropet till API:et.
Välj Utloggning för att logga ut från appen. Du uppmanas att välja ett konto att logga ut från. Välj det konto som du använde för att logga in.
Referensmaterial
ms_identity_python sammanfattar information om MSAL-biblioteket. Mer information finns i MSAL Python-dokumentation. Det här referensmaterialet hjälper dig att förstå hur du initierar en app och hämtar token med hjälp av MSAL Python.