Skip to main content

A Python package for OAuth authentication with various social providers.

Project description

A Python package for OAuth authentication with various social providers, inspired by Laravel Socialite.

Installation

pip install py-socialite

Configuration

Create a configuration file (e.g., config.py) with your OAuth credentials:

# config.py

SOCIAL_PROVIDERS = {
    'google': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url'
    },
    'github': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url'
    },
    'dropbox': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url'
    },
    'x': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url'
    },
    'your_provider_name': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url'
    },
    
}

Set the configuration path in your environment:

export SOCIALITE_CONFIG_PATH=/path/to/config.py

Usage

from py_socialite.socialite import Socialite

# Initialize Socialite
socialite = Socialite()

# Get authorization URL
auth_url = socialite.provider('google').get_auth_url()

# After callback, get user info
user = socialite.provider('google').get_user(code)

Error Handling

The package raises SocialAuthError for any authentication issues.

try:
    user = socialite.provider('google').get_user(code)
except SocialAuthError as e:
    print(f"Authentication failed: {str(e)}")

Project Structure

py-socialite/
├── py_socialite/
│   ├── __init__.py         # Version and package info   ├── exceptions.py       # Custom exceptions   ├── config.py           # Provider configurations   ├── socialite.py        # Main service class   └── providers/
│       ├── base.py         # Abstract base provider       └── google.py       # Google implementation
├── setup.py                # Package setup
└── deploy.sh              # Deployment script

Requirements

  • python 3.10+
  • requests
  • python-dotenv

support providers

  • google
  • github
  • dropbox
  • x
  • facebook
  • microsoft

Response sample data

{
    "provider": "google",
    "id": "1234567890",
    "email": "example@example.com",
    "name": "John Doe",
    "avatar": "https://example.com/avatar.jpg",
    "raw": {
        .....
    }
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_socialite-0.0.3.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_socialite-0.0.3-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file py_socialite-0.0.3.tar.gz.

File metadata

  • Download URL: py_socialite-0.0.3.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for py_socialite-0.0.3.tar.gz
Algorithm Hash digest
SHA256 f289116ddb956e08448fa33f40c6c710d4ce3d093ff5d8cb96885dedddc3b979
MD5 502c96538a2498550147d482a1da4d53
BLAKE2b-256 b9919be818e73e31bbeffdcb9bf39585d5f44e847979445cfec45eb06c0b6fc3

See more details on using hashes here.

File details

Details for the file py_socialite-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: py_socialite-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for py_socialite-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 659a54851d4fbf916d356afd127ca07a2844c4ebe6ca8871d52a03f2c6b8598b
MD5 b1f17edaed862eeeb09d210d12445e9d
BLAKE2b-256 0ba59e7c24d4affcb179d8532c02a9e14766ad42cd1322d27c1d587014f66f5f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page