Home >Backend Development >Python Tutorial >Azure bearer token lifecycle

Azure bearer token lifecycle

WBOY
WBOYforward
2024-02-22 13:00:14493browse

Azure 不记名令牌生命周期

Question content

I have a python code that calls the graphics api and browses a directory on a sharepoint. The directory has 120gb of files and takes hours to scan. However, I observed that the script only appears to be running on visual studio code and does not execute further. I print the filename in a loop and after an hour it stops inputting the filename.

Is it because the token expires in one hour? If so, why don't I get an error indicating that the token is invalid?

# 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)

Correct answer


The behavior you describe is almost certainly due to the bearer token you seem to be using which is indeed only valid for an hour or so.

By default, requests does not raise exceptions based solely on HTTP status codes allowing developers to choose how they want to handle such situations. In your case, your while true: loop just keeps running, successfully parsing the json structure returned from the error response, but never actually satisfying any of the conditions within the block.

If you do want the script to raise an exception on unsuccessful http response codes, you can add a call to raise_for_status():

graph_result = requests.get(url=url, headers=headers)
graph_result.raise_for_status()

However, if your code's expected uptime exceeds the token's validity period, you should probably use the proper oauth refresh process in your code to prevent this type of error from occurring.

The above is the detailed content of Azure bearer token lifecycle. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete