{"library":"requests-oauth2client","title":"requests-oauth2client","description":"requests-oauth2client is an OAuth 2.x client for Python that leverages the popular `requests` HTTP library. It's designed to obtain, refresh, and revoke tokens from any OAuth2.x/OIDC compliant Authorization Server, supporting various grant types like Client Credentials, Authorization Code, Refresh Token, Token Exchange, JWT Bearer, Device Authorization, Resource Owner Password, and CIBA. The library simplifies OAuth2 interactions by integrating as a `requests` Auth Handler, automatically managing token lifecycle. It is currently at version 1.8.0 and receives regular updates.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install requests-oauth2client"],"cli":null},"imports":["from requests_oauth2client import OAuth2Client","from requests_oauth2client import ApiClient","from requests_oauth2client import OAuth2ClientCredentialsAuth","from requests_oauth2client import OAuth2AuthorizationCodeAuth","from requests_oauth2client import BearerToken"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport requests\nfrom requests_oauth2client import OAuth2Client, OAuth2ClientCredentialsAuth\n\n# --- Configuration (replace with your actual values or environment variables) ---\nTOKEN_ENDPOINT = os.environ.get('OAUTH_TOKEN_ENDPOINT', 'https://example.com/oauth/token')\nCLIENT_ID = os.environ.get('OAUTH_CLIENT_ID', 'your_client_id')\nCLIENT_SECRET = os.environ.get('OAUTH_CLIENT_SECRET', 'your_client_secret')\nAPI_BASE_URL = os.environ.get('API_BASE_URL', 'https://api.example.com')\nSCOPE = os.environ.get('OAUTH_SCOPE', 'read write')\n\n# --- Client Credentials Flow Example ---\n\ntry:\n    # 1. Initialize the OAuth2Client\n    oauth2client = OAuth2Client(\n        token_endpoint=TOKEN_ENDPOINT,\n        auth=(CLIENT_ID, CLIENT_SECRET) # Client authentication (Basic or Post)\n    )\n\n    # 2. Create an OAuth2ClientCredentialsAuth handler\n    auth_handler = OAuth2ClientCredentialsAuth(oauth2client, scope=SCOPE)\n\n    # 3. Create a requests Session and attach the auth handler\n    session = requests.Session()\n    session.auth = auth_handler\n\n    # 4. Make an authenticated API request\n    print(f\"Attempting to fetch resource from {API_BASE_URL}/data...\")\n    response = session.get(f\"{API_BASE_URL}/data\")\n    response.raise_for_status() # Raise an exception for HTTP errors\n\n    print(\"Successfully fetched data:\")\n    print(response.json())\n\nexcept requests.exceptions.RequestException as e:\n    print(f\"An HTTP error occurred: {e}\")\n    if e.response is not None:\n        print(f\"Response Status: {e.response.status_code}\")\n        print(f\"Response Body: {e.response.text}\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")\n","lang":"python","description":"This quickstart demonstrates the Client Credentials flow using `requests-oauth2client`. It initializes an `OAuth2Client`, creates an `OAuth2ClientCredentialsAuth` handler, and attaches it to a `requests.Session`. The session then automatically handles obtaining, caching, and refreshing the access token for subsequent API calls to a protected resource. Replace placeholder URLs and credentials with your actual values, preferably using environment variables for sensitive data.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"1.8.0","pypi_latest":"1.8.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.4,"avg_import_s":1.11,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.97,"mem_mb":17.5,"disk_size":"40.4M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.7,"mem_mb":17.5,"disk_size":"41M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.41,"mem_mb":19.4,"disk_size":"43.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":1.31,"mem_mb":19.4,"disk_size":"44M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.41,"mem_mb":19.4,"disk_size":"34.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":1.41,"mem_mb":19.4,"disk_size":"35M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.07,"mem_mb":18.4,"disk_size":"34.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":1.13,"mem_mb":18.4,"disk_size":"35M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.91,"mem_mb":17.4,"disk_size":"40.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"requests-oauth2client","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.1,"import_time_s":0.8,"mem_mb":17.4,"disk_size":"41M"}]}}