7.1 Verwendung von Refresh Token
Ist das Refresh-Token für eine Client-ID aktiviert, sieht die Antwort auf den initialen Bezug des Access-Tokens folgendermassen aus:
{
"access_token":"ACCESSTOKEN",
"expires_in":3600,
"hin_id": "clientid",
"refresh_token": "REFRESHTOKEN",
"token_type": "Bearer"
}
Beispiel-Code für die Verwendung von Refresh Token in Python
import requests
import time
def get_new_access_token(refresh_token, client_id, client_secret):
url = "https://oauth2.hin.ch/REST/v1/OAuth/GetAccessToken"
payload = f'grant_type=refresh_token&refresh_token={refresh_token}&client_id={client_id}&client_secret={client_secret}'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.post(url, headers=headers, data=payload)
if response.status_code == 200:
token_data = response.json()
new_access_token = token_data['access_token']
new_refresh_token = token_data.get('refresh_token', refresh_token)
return new_access_token, new_refresh_token
else:
return None, refresh_token
def main():
refresh_token = '<REFRESH_TOKEN>' # Dein initiales Refresh Token
client_id = '<CLIENT_ID>' # Deine Client-ID
client_secret = '<CLIENT_SECRET>' # Dein Client-Secret
while True:
new_access_token, refresh_token = get_new_access_token(refresh_token, client_id, client_secret)
if new_access_token:
# Hier kannst du den Zugriff mit dem neuen Access Token fortsetzen
else:
# Fehler beim Erneuern des Tokens. Bitte überprüfen Sie die Anmeldedaten.
break
time.sleep(3600) # z.B. 1 Stunde warten, bevor das Token wieder erneuert wird
if __name__ == "__main__":
main()