Lebenszyklus des Azure-Inhabertokens

WBOY
Freigeben: 2024-02-22 13:00:14
nach vorne
435 Leute haben es durchsucht

Azure 不记名令牌生命周期

Frageninhalt

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)
Nach dem Login kopieren


Richtige Antwort


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()
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!