This quick how-to was written with python 23.710.11 8 and requests 2.828.10
Note |
---|
PyVSS is now the supported and recommended method to interact with the RESTful VSS API. |
Step-by-step guide
The following steps demonstrate how get_token.py workshow to get an access token:
Import requests, sys, getpass and requests.auth.HTTPBasicAuth to handle endpoint authentication.
Code Block language py import getpass import sys import requests from requests.auth import HTTPBasicAuth
Get user from input and password via getpass.getpass() so it's not prompted.
Code Block language py # input argument usr = sys.argv[1] # Prompt the user for a password without echoing. pwd = getpass.getpass()
Set the authentication endpoint
Code Block language py token_endpoint = 'https://vss-api.eis.utoronto.ca/auth/request-token'
Make a POST request to token_request and create a new HTTPBasicAuth object initializing it with usr and pwd
Code Block language py # NO MFA r = requests.post(url=token_endpoint, auth=HTTPBasicAuth(usr, pwd)) # With MFA r = requests.post(url=token_endpoint, auth=HTTPBasicAuth(usr, pwd), json={'otp': '00000'})
Get JSON response body
Code Block language py data = r.json()
Print Error if any or the token if succeeded:
Code Block language py if r.ok: print
...
(f"TOKEN={
...
data['token']}") else: print
...
(f"ERROR: {
...
r.status_code
...
} {data['
...
type']
...
}: {data['message']}")
Script
Full python script is showing below:
Code Block | ||||
---|---|---|---|---|
| ||||
#!/usr/bin/env python # importing modules import getpass import sys import requests from requests.auth import HTTPBasicAuth # input argument usr = sys.argv[1] # Prompt the user for a password without echoing. pwd = getpass.getpass() # authentication endpoint token_endpoint = 'https://vss-api.eis.utoronto.ca/auth/request-token' # making post request r = requests.post(url=token_endpoint, auth=HTTPBasicAuth(usr, pwd)) data = r.json() # getting token or printing error if r.ok: print '(f"TOKEN={}'.format(data['token']}") else: print 'ERROR: {} {}(f"ERROR: {}'.format(r.status_code,} {data['errortype'],}: {data['message']}") |
Download get_token.py
Related articles
Filter by label (Content by label) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
...
|
Page Properties | ||
---|---|---|
| ||
|