Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Mitarbeitermandanten
Externe Mandanten (weitere Informationen)
In diesem Lernprogramm rufen Sie die Microsoft Graph-API aus einer Python Flask-Web-App auf. Im vorherigen Lernprogramm haben Sie der Anwendung die Anmelde- und Abmeldeerfahrungen hinzugefügt. Sobald sich ein Benutzer anmeldet, erwirbt die App ein Zugriffstoken, um die Microsoft Graph-API aufzurufen.
In diesem Tutorial führen Sie Folgendes durch:
- Aktualisieren einer vorhandenen Python Flask-Web-App zum Abrufen eines Zugriffstokens
- Verwenden Sie das Zugriffstoken, um die Microsoft Graph-API aufzurufen.
Voraussetzungen
Führen Sie die Schritte im Lernprogramm aus: Hinzufügen der Add-In-Anmeldung zu einer Python Flask-Web-App mithilfe der Microsoft Identity Platform.
Definieren von Bereichen und API-Endpunkten
In diesem Beispiel rufen wir die Microsoft Graph-API auf, um die Profilinformationen des angemeldeten Benutzers abzurufen. Wenn Sich Ihre App in einem Mitarbeitermandanten befindet, stimmt der Benutzer bei der Anmeldung den von der App erforderlichen Bereichen zu, um auf die Microsoft Graph-API zuzugreifen. Wenn sich Ihre App in einem externen Mandanten befindet, stellen Sie sicher, dass Sie im Namen der Benutzer in Ihrem Mandanten Administratorzustimmung erteilen. Die App verwendet dann das Zugriffstoken, um die API aufzurufen und die Ergebnisse anzuzeigen.
Fügen Sie in Ihrer env-Datei den Endpunkt hinzu, den wir aufrufen, und die Bereiche, die zum Aufrufen der Microsoft Graph-API erforderlich sind:
SCOPE=User.Read
ENDPOINT=https://graph.microsoft.com/v1.0/me
Lesen Sie die neuen Konfigurationen in Ihrer App, indem Sie die app_config.py Datei aktualisieren.
# other configs go here
SCOPE = os.getenv("SCOPE")
ENDPOINT = os.getenv("ENDPOINT")
Aufrufen einer geschützten API
Übergeben Sie den API-Endpunkt an die Startseite. Auf diese Weise können Sie Ihren Endpunkt aufrufen. Aktualisieren Sie die
/Route so, dass sie wie im folgenden Codeausschnitt dargestellt aussieht:@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 )Rufen Sie die geschützte Microsoft Graph-API auf, wie im folgenden Codeausschnitt gezeigt. Wir übergeben die Liste der Bereiche, die unsere App verwenden muss. Wenn Bereiche vorhanden sind, enthält der Kontext ein Zugriffstoken. Das Zugriffstoken wird verwendet, um die downstream-API aufzurufen. Fügen Sie diesen Code zur datei app.py hinzu:
@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)Wenn die App erfolgreich ein Zugriffstoken abruft, wird mithilfe der
requests.get(...)Methode eine HTTP-Anforderung an die downstream-API gesendet. In der Anforderung wird unsere downstream-API-URL angegebenapp_config.ENDPOINTund das Zugriffstoken, dasAuthorizationim Feld des Anforderungsheaders übergeben wird.Eine erfolgreiche Anforderung an die downstream-API (Microsoft Graph-API) gibt eine JSON-Antwort zurück, die in einer
api_resultVariablen gespeichert und an diedisplay.htmlVorlage zum Rendern übergeben wird.
Anzeigen von API-Ergebnissen
Erstellen Sie eine Datei namensdisplay.html im Vorlagenordner . Auf dieser Seite wird das Ergebnis des Aufrufs an den Microsoft Graph-Endpunkt angezeigt. Fügen Sie der dateidisplay.html den folgenden Code hinzu:
<!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>
Ausführen und Testen der Beispielweb-App
Führen Sie in Ihrem Terminal den folgenden Befehl aus:
python3 -m flask run --debug --host=localhost --port=3000Sie können den Port Ihrer Wahl verwenden. Dieser Port sollte dem Port des Umleitungs-URI ähneln, den Sie zuvor registriert haben.
Öffnen Sie Ihren Browser, und wechseln Sie dann zu
http://localhost:3000. Es wird eine Anmeldeseite angezeigt.Melden Sie sich mit Ihrem Microsoft-Konto an, indem Sie die Schritte ausführen. Sie werden aufgefordert, eine E-Mail-Adresse und ein Kennwort für die Anmeldung anzugeben.
Wenn für die Anwendung Bereiche erforderlich sind, wird ein Zustimmungsbildschirm angezeigt. Die Anwendung fordert die Berechtigung zum Verwalten des Zugriffs auf Daten an, die Sie zugriffen und sich anmelden können. Wählen Sie "Annehmen" aus. Dieser Bildschirm wird nicht angezeigt, wenn keine Bereiche definiert sind.
API aufrufen
Wählen Sie auf der Startseite den Link "API aufrufen " aus. Die App ruft die Microsoft Graph-API auf, um die Profilinformationen des angemeldeten Benutzers abzurufen. Die App zeigt das Ergebnis des Aufrufs der API an.
Wählen Sie "Abmelden" aus, um sich bei der App abzumelden. Sie werden aufgefordert, ein Konto für die Abmeldung zu wählen. Wählen Sie das Konto aus, das Sie zum Anmelden verwendet haben.
Referenzmaterial
Die ms_identity_python abstrahiert die Details der MSAL-Bibliothek. Weitere Informationen finden Sie in der MSAL Python-Dokumentation. Dieses Referenzmaterial hilft Ihnen zu verstehen, wie Sie eine App initialisieren und Token mithilfe von MSAL Python erwerben.