Heim > Artikel > Backend-Entwicklung > Lebenszyklus des Azure-Inhabertokens
Ich habe einen Python-Code, um die Grafik-API aufzurufen und ein Verzeichnis auf einem Sharepoint zu durchsuchen. Das Verzeichnis enthält 120 GB an Dateien und das Scannen dauert Stunden. Allerdings habe ich festgestellt, dass das Skript scheinbar nur auf Visual Studio-Code läuft und nicht weiter ausgeführt wird. Ich drucke den Dateinamen in einer Schleife aus und nach einer Stunde stoppt die Eingabe des Dateinamens.
Liegt es daran, dass der Token in einer Stunde abläuft? Wenn ja, warum erhalte ich keine Fehlermeldung, dass das Token ungültig ist?
# Define imports import requests # Copy access_token and specify the MS Graph API endpoint you want to call, e.g. 'https://graph.microsoft.com/v1.0/groups' to get all groups in your organization #access_token = '{ACCESS TOKEN YOU ACQUIRED PREVIOUSLY}' url = "[URL TO THE SHAREPOINT]" headers = { 'Authorization': access_token } consentfilecount=0 clientreportcount = 0 graphlinkcount = 0 while True:# #print(graph_result.json()['@odata.nextLink']) graph_result = requests.get(url=url, headers=headers) if ('value' in graph_result.json()): for list in graph_result.json()['value']: if(("Client Consent Form").lower() in list["name"].lower()): consentfilecount +=1 print(list["name"]) if(("Final Client Report").lower() in list["name"].lower()): clientreportcount +=1 print(list["name"]) #print(graph_result.json()) if('@odata.nextLink' in graph_result.json()): url = graph_result.json()['@odata.nextLink'] graphlinkcount += 1 else: break print(consentfilecount)
Das von Ihnen beschriebene Verhalten ist mit ziemlicher Sicherheit auf den Bearer-Token zurückzuführen, den Sie offenbar verwenden, der tatsächlich nur etwa eine Stunde lang gültig ist.
Standardmäßig läuft die requests
does not raise exceptions based solely on HTTP status codes 允许开发人员选择他们想要如何处理此类情况。在您的情况下,您的 while true:
-Schleife einfach weiter und analysiert erfolgreich die von der Fehlerantwort zurückgegebene JSON-Struktur, erfüllt jedoch nie eine der Bedingungen innerhalb des Blocks.
Wenn Sie wirklich möchten, dass Ihr Skript bei fehlgeschlagenen HTTP-Antwortcodes eine Ausnahme auslöst, können Sie einen Aufruf zu raise_for_status()
hinzufügen:
graph_result = requests.get(url=url, headers=headers) graph_result.raise_for_status()
Wenn jedoch die erwartete Betriebszeit Ihres Codes die Gültigkeitsdauer des Tokens überschreitet, sollten Sie wahrscheinlich einen ordnungsgemäßen OAuth-Aktualisierungsprozess in Ihrem Code verwenden, um das Auftreten dieser Art von Fehlern zu verhindern.
Das obige ist der detaillierte Inhalt vonLebenszyklus des Azure-Inhabertokens. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!