{"library":"oauth2","title":"oauth2 - OAuth 1.0a Client","description":"The `oauth2` library provides a Python implementation for the OAuth 1.0a protocol. While it remains functional for applications requiring this older standard, OAuth 1.0a has largely been superseded by OAuth 2.0 for modern API integrations. The library's last significant development occurred around 2015, with minor updates up to 2022, and the current PyPI version is 1.9.0.post1.","language":"python","status":"deprecated","last_verified":"Fri May 15","install":{"commands":["pip install oauth2"],"cli":null},"imports":["import oauth2; oauth2.Consumer","import oauth2; oauth2.Token","import oauth2; oauth2.Client","import oauth2; oauth2.Request"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import oauth2\nimport os\nfrom urllib.parse import parse_qsl\n\n# Replace with your actual consumer and token keys/secrets (from environment or config)\nCONSUMER_KEY = os.environ.get('OAUTH2_CONSUMER_KEY', 'your_consumer_key')\nCONSUMER_SECRET = os.environ.get('OAUTH2_CONSUMER_SECRET', 'your_consumer_secret')\nTOKEN_KEY = os.environ.get('OAUTH2_TOKEN_KEY', 'your_token_key')\nTOKEN_SECRET = os.environ.get('OAUTH2_TOKEN_SECRET', 'your_token_secret')\n\n# The URL to make a signed request to\nREQUEST_URL = \"http://example.com/api/resource\"\n\n# --- Step 1: Initialize Consumer and Token ---\n# Create a Consumer object (application credentials)\nconsumer = oauth2.Consumer(key=CONSUMER_KEY, secret=CONSUMER_SECRET)\n\n# Create a Token object (user credentials obtained previously via 3-legged flow)\ntoken = oauth2.Token(key=TOKEN_KEY, secret=TOKEN_SECRET)\n\n# --- Step 2: Create an OAuth2 Client ---\n# The client combines consumer and token to sign requests\nclient = oauth2.Client(consumer, token)\n\n# --- Step 3: Make a signed request ---\nprint(f\"Making a signed GET request to: {REQUEST_URL}\")\ntry:\n    resp, content = client.request(REQUEST_URL, \"GET\")\n\n    print(f\"\\nHTTP Status: {resp.status}\")\n    print(f\"Response Content (first 200 chars): {content.decode('utf-8')[:200]}...\")\n\n    if resp.status != 200:\n        print(f\"Error: {content.decode('utf-8')}\")\n\nexcept Exception as e:\n    print(f\"An error occurred during the request: {e}\")\n\n# --- Example: Initiating a 3-legged OAuth flow (getting a request token) ---\n# This part assumes a request token URL exists for demonstration.\n# request_token_url = \"http://example.com/oauth/request_token\"\n# print(f\"\\nAttempting to get a request token from: {request_token_url}\")\n# try:\n#     # For requesting a request token, usually only the consumer is needed initially\n#     req_client = oauth2.Client(consumer)\n#     resp_req, content_req = req_client.request(request_token_url, \"GET\")\n#     if resp_req.status == 200:\n#         request_token_data = dict(parse_qsl(content_req.decode('utf-8')))\n#         print(f\"Successfully got Request Token: {request_token_data}\")\n#     else:\n#         print(f\"Failed to get Request Token: Status {resp_req.status}, Content: {content_req.decode('utf-8')}\")\n# except Exception as e:\n#     print(f\"An error occurred getting request token: {e}\")","lang":"python","description":"Demonstrates how to initialize an OAuth 1.0a client with consumer and token credentials (assuming they are pre-obtained), then use it to make a signed GET request to a protected resource. This is typical for 2-legged OAuth or after the 3-legged flow has completed and access tokens are available. The example uses environment variables for sensitive credentials.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"1.9.0.post1","pypi_latest":"1.9.0.post1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.7,"avg_import_s":1.06,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.1,"mem_mb":19.7,"disk_size":"20.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.6,"import_time_s":0.83,"mem_mb":19.8,"disk_size":"21M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.29,"mem_mb":21.7,"disk_size":"22.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.7,"import_time_s":1.13,"mem_mb":21.7,"disk_size":"23M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"13.2M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"14M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"12.9M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"13M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.07,"mem_mb":19.3,"disk_size":"19.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"oauth2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":1.9,"import_time_s":0.96,"mem_mb":19.3,"disk_size":"20M"}]}}