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., socialite.py) with your OAuth credentials:

# socialite.py

SOCIAL_PROVIDERS = {
    'google': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url',
        'scope': 'openid email profile'
    },
    'github': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url',
        'scope': 'read:user user:email'
    },
    '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',
        'scope': 'tweet.read users.read follows.read offline.access'
    },
    'linkedin': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url',
        'scope': 'openid profile email'
    },
    'facebook': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url',
        'scope': 'email public_profile'
    },
    'microsoft': {
        'client_id': 'your-client-id',
        'client_secret': 'your-client-secret',
        'redirect_uri': 'your-callback-url',
        'scope': 'openid email profile User.Read'
    }
}

Set the configuration path in your environment:

export SOCIALITE_CONFIG_PATH="modules.common.config.socialite"

# or add it to your .env file
SOCIALITE_CONFIG_PATH='modules.common.config.socialite'

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
  • linkedin

Response sample data

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

Resources

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.5.tar.gz (8.4 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.5-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: py_socialite-0.0.5.tar.gz
  • Upload date:
  • Size: 8.4 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.5.tar.gz
Algorithm Hash digest
SHA256 8f53cd55dd4942484938926a08a1fa3209d9f183cb62347babc32490d59d04d6
MD5 2447dad406606e462be3e363e68006bc
BLAKE2b-256 fc70222c2be9e1506d389e9c017e30fb9b33baa71f7f2a144f7756b53cbf8cad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: py_socialite-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 11.8 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0b35d6267acacb310989a99ce4d1d9edd720c3195da6e3b435b85139f7d52621
MD5 83a3af310d23d26f7ae10194fa02f7f7
BLAKE2b-256 3e98f2151a8e29a35ea3f8b7b09076aa22d627974f70335088290006e3c45b5b

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