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
- github
- dropbox
- x
- microsoft
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.
Metadata
Release files for py-socialite 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| py_socialite-0.0.5.tar.gz | 8.4 kB | Without provenance | Details for py_socialite-0.0.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| py_socialite-0.0.5-py3-none-any.whl | Python 3 | none | any | Details for py_socialite-0.0.5-py3-none-any.whl |
Total release size: 20.2 kB
Security for py-socialite 0.0.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.