41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from requests_oauthlib import OAuth2Session
|
|
from oauthlib.oauth2 import BackendApplicationClient
|
|
|
|
|
|
def get_token(client_id, client_secret, token_url, username, password, audience, scope):
|
|
client = BackendApplicationClient(client_id=client_id)
|
|
oauth = OAuth2Session(client=client)
|
|
token = oauth.fetch_token(
|
|
token_url=token_url,
|
|
username=username,
|
|
password=password,
|
|
client_id=client_id,
|
|
client_secret=client_secret,
|
|
audience=audience,
|
|
scope=scope
|
|
)
|
|
return token
|
|
|
|
|
|
def api_client(base_url, token):
|
|
client = OAuth2Session(token=token)
|
|
response = client.get(base_url)
|
|
return response.content
|
|
|
|
|
|
client_id = '<your_client_id>'
|
|
client_secret = '<your_secret_id>'
|
|
token_url = '<oauth_token_url>'
|
|
username = '<your_username>'
|
|
password = '<your_password>'
|
|
audience = '<intended_audience>'
|
|
scope = ['scope1', 'scope2']
|
|
|
|
# Fetch token
|
|
token = get_token(client_id, client_secret, token_url, username, password, audience, scope)
|
|
|
|
# Now we can make API calls
|
|
api_response = api_client('https://api.example.com/resource', token)
|
|
|
|
print(api_response)
|