OAuth CLI Kit

0.1.3 · active · verified Thu Apr 16

oauth-cli-kit (version 0.1.3) provides reusable helpers for implementing the OAuth 2.0 Authorization Code Grant flow with PKCE (Proof Key for Code Exchange) in command-line applications. It simplifies the process by handling browser interaction for user authorization and setting up a temporary local server for the redirect URI callback. The library aims for a stable release cadence but is currently in early development (0.x.x), meaning API changes are possible.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initiate an OAuth 2.0 PKCE flow using `OAuthCliApp`. It will open a browser for user authentication and then process the callback locally. Remember to replace placeholder URLs and client IDs with your actual provider details, ideally via environment variables, for a successful authentication.

import os
from oauth_cli_kit import OAuthCliApp

def main():
    # Replace these placeholders with your actual OAuth provider details or set as environment variables.
    client_id = os.environ.get("OAUTH_CLI_KIT_CLIENT_ID", "YOUR_CLIENT_ID_HERE")
    auth_url = os.environ.get("OAUTH_CLI_KIT_AUTH_URL", "https://example.com/oauth/authorize")
    token_url = os.environ.get("OAUTH_CLI_KIT_TOKEN_URL", "https://example.com/oauth/token")
    redirect_uri = os.environ.get("OAUTH_CLI_KIT_REDIRECT_URI", "http://localhost:8000")
    scope = os.environ.get("OAUTH_CLI_KIT_SCOPE", "profile email openid")

    if client_id == "YOUR_CLIENT_ID_HERE" or auth_url == "https://example.com/oauth/authorize":
        print("WARNING: Using placeholder OAuth credentials. ")
        print("Please configure OAUTH_CLI_KIT_CLIENT_ID, OAUTH_CLI_KIT_AUTH_URL, ")
        print("OAUTH_CLI_KIT_TOKEN_URL environment variables or replace placeholders in the code ")
        print("with your actual OAuth provider details to run a successful flow.")
        print(f"  Attempting with: Client ID={client_id}, Auth URL={auth_url}, Token URL={token_url}")

    print("Initiating OAuth 2.0 PKCE flow...")

    try:
        oauth_app = OAuthCliApp(
            client_id=client_id,
            auth_url=auth_url,
            token_url=token_url,
            redirect_uri=redirect_uri,
            scope=scope,
        )
        token_response = oauth_app.run_flow() # This call opens browser and waits
        print("\n--- OAuth Flow Successful ---")
        print(f"Access Token: {token_response.access_token[:10]}... (truncated)")
        if token_response.refresh_token:
            print(f"Refresh Token: {token_response.refresh_token[:10]}... (truncated)")
        print(f"Token Type: {token_response.token_type}")
        print(f"Expires In: {token_response.expires_in} seconds")
        if token_response.id_token:
            print(f"ID Token (JWT): {token_response.id_token[:10]}... (truncated)")

    except Exception as e:
        print(f"\n--- OAuth Flow Failed ---")
        print(f"Error: {e}")
        print("Please check your configuration, network connection, and browser interaction.")

if __name__ == "__main__":
    main()

view raw JSON →