# About this Python Sample App
This sample app is a very simple Python application that does the following:
- Refreshes an existing token stored on the file system in a json file using its
refresh_token
.
There are comments in the code that describe high-level what is happening.
You can copy the sample code below. Ensure that you install the referenced imported packages that are not part of the standard library.
# How to Run
-
Install the requirements with:
pip install requests
-
Run the Sample App with:
python example_refresh_token.py
Problems Running the Code?
If you have any problems running the code then reach out to us in our Community Forum.
Sample Code
import requests import json import base64 # Insert your own info here as you defined when you created your APP # Note that in a real app you would not want to hard-code these values # Instead you would want to import them from the environment or even use # a more secure solution like a keystore. CLIENT_ID = "your-client-id" CLIENT_SECRET = "your-client-secret" REDIRECT_URI = "http://127.0.0.1:5000/" STATE = "yourstatestring" # note that in a true production app you would use state to protect against cross site attacks DOMAIN = 'daas.api.hp.com' # use eu hostname if you are in EU def refresh_token(): '''refresh existing token for a new one''' with open('creds.json', 'r') as f: creds = json.load(f) refresh_token = creds['refresh_token'] base64_encoded_clientid_clientsecret = base64.b64encode(str.encode(f'{CLIENT_ID}:{CLIENT_SECRET}')) # concatenate with : and encode in base64 base64_encoded_clientid_clientsecret = base64_encoded_clientid_clientsecret.decode('ascii') # turn bytes object into ascii string base_url = f'https://{DOMAIN}' url = f"{base_url}/oauth/v1/token" headers = { 'Content-Type': "application/x-www-form-urlencoded", 'Authorization': f'Basic {base64_encoded_clientid_clientsecret}' } data = {'grant_type': 'refresh_token', 'redirect_uri': REDIRECT_URI, 'refresh_token': refresh_token } r = requests.post(url, headers=headers, data=data) response = r.json() if response.get('access_token'): # don't store creds in plaintext in a real app obviously with open('creds.json', 'w') as f: json.dump(response, f, indent=4) else: print('There was an error refreshing your access token') print(r.text) if __name__ == '__main__': refresh_token() # refresh an existing token (we are assuming you have one stored in creds.json)