I am trying to create an API client, but the problem is that the token changes every hour. I want to create a class that contains a “token” variable that should change every hour.
The idea is to get a token when first run the script, create this object and use it.
I have a function that successfully receives a new token on execution.
class AccessToken:
def __init__(self):
self.token = get_new_access_token()
def new_token(self):
self.token = get_new_access_token()
print(self.token)
while True:
time.sleep(3600)
new_token()
def get_new_access_token():
body = {"client_id": config.ESPORT_ID,
"client_secret": config.ESPORT_SECRET_KEY_API
}
resp = requests.post(f'https://.........../oauth/token', json=body)
return resp
Advertisement
Answer
One way is to record when the token was made, and compare timestamp to see if token is valid.
class AccessToken:
TOKEN_TTL = 60 * 60 - 60 (`-60`: buffer)
def __init__(self):
self.new_token()
def refresh_token(self):
self.token = get_new_access_token()
self.token_gen_time = time.time() # When token was made
def get_token(self):
if time.time() > self.token_gen_time + self.TOKEN_TTL:
# token can be expired.
self.refresh_token()
return self.token
access_token = AccessToken()
while True:
time.sleep(5)
token = access_token.get_token()
# do something with token