Convert Figma logo to code with AI

omab logopython-social-auth

Social auth made simple

2,826
1,080
2,826
23

Top Related Projects

Python Social Auth - Application - Django

Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. 🔁 Mirror of https://codeberg.org/allauth/django-allauth/

4,878

The ultimate Python library in building OAuth, OpenID Connect clients and servers. JWS,JWE,JWK,JWA,JWT included.

Quick Overview

Python Social Auth is a versatile Python library that provides a set of strategies for implementing social authentication in web applications. It supports various social platforms and frameworks, making it easier for developers to integrate social login functionality into their projects.

Pros

  • Supports a wide range of social platforms (e.g., Facebook, Google, Twitter)
  • Compatible with multiple Python web frameworks (Django, Flask, Pyramid)
  • Highly customizable and extensible
  • Active community and regular updates

Cons

  • Can be complex to set up for beginners
  • Documentation could be more comprehensive
  • Some less popular social platforms may have limited support
  • Potential security risks if not properly configured

Code Examples

  1. Basic Django setup:
INSTALLED_APPS = [
    ...
    'social_django',
    ...
]

AUTHENTICATION_BACKENDS = (
    'social_core.backends.google.GoogleOAuth2',
    'social_core.backends.facebook.FacebookOAuth2',
    'django.contrib.auth.backends.ModelBackend',
)
  1. Flask configuration:
from flask import Flask
from social_flask.routes import social_auth
from social_flask_sqlalchemy.models import init_social

app = Flask(__name__)
app.config['SOCIAL_AUTH_AUTHENTICATION_BACKENDS'] = (
    'social_core.backends.google.GoogleOAuth2',
    'social_core.backends.facebook.FacebookOAuth2',
)
app.register_blueprint(social_auth)
init_social(app, db)
  1. Using the pipeline to customize authentication:
SOCIAL_AUTH_PIPELINE = (
    'social_core.pipeline.social_auth.social_details',
    'social_core.pipeline.social_auth.social_uid',
    'social_core.pipeline.social_auth.auth_allowed',
    'social_core.pipeline.social_auth.social_user',
    'social_core.pipeline.user.get_username',
    'social_core.pipeline.user.create_user',
    'social_core.pipeline.social_auth.associate_user',
    'social_core.pipeline.social_auth.load_extra_data',
    'social_core.pipeline.user.user_details',
    'myapp.pipeline.custom_pipeline_function',
)

Getting Started

  1. Install the library:

    pip install social-auth-app-django  # For Django
    pip install social-auth-app-flask-sqlalchemy  # For Flask
    
  2. Add social auth settings to your project's settings file:

    SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'your-google-oauth2-key'
    SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'your-google-oauth2-secret'
    
  3. Include social auth URLs in your project's URL configuration:

    urlpatterns = [
        ...
        path('', include('social_django.urls', namespace='social')),
        ...
    ]
    
  4. Use the provided views or create custom ones to handle authentication:

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def home(request):
        return render(request, 'home.html')
    

Competitor Comparisons

Python Social Auth - Application - Django

Pros of social-app-django

  • More focused on Django integration, providing a streamlined experience for Django developers
  • Actively maintained with regular updates and bug fixes
  • Better documentation and examples specific to Django usage

Cons of social-app-django

  • Less flexible for non-Django projects compared to python-social-auth
  • Smaller community and fewer contributors, potentially leading to slower issue resolution
  • More limited in terms of supported authentication backends

Code Comparison

python-social-auth:

from social_core.backends.oauth import BaseOAuth2

class CustomOAuth2(BaseOAuth2):
    name = 'custom'
    AUTHORIZATION_URL = 'https://example.com/oauth/authorize'
    ACCESS_TOKEN_URL = 'https://example.com/oauth/token'

social-app-django:

from social_core.backends.oauth import BaseOAuth2

class CustomOAuth2(BaseOAuth2):
    name = 'custom'
    AUTHORIZATION_URL = 'https://example.com/oauth/authorize'
    ACCESS_TOKEN_URL = 'https://example.com/oauth/token'

The code comparison shows that both libraries use similar base classes and configuration methods for custom OAuth2 backends. However, social-app-django provides additional Django-specific utilities and middleware for easier integration with Django projects.

Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. 🔁 Mirror of https://codeberg.org/allauth/django-allauth/

Pros of django-allauth

  • More comprehensive authentication solution, including both local and social authentication
  • Better integration with Django, including built-in views and templates
  • Supports a wider range of social providers out-of-the-box

Cons of django-allauth

  • More complex setup and configuration process
  • Heavier and potentially slower due to its comprehensive feature set
  • Less flexibility for custom authentication flows compared to python-social-auth

Code Comparison

django-allauth configuration:

INSTALLED_APPS = [
    ...
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.github',
]

AUTHENTICATION_BACKENDS = [
    'allauth.account.auth_backends.AuthenticationBackend',
]

python-social-auth configuration:

INSTALLED_APPS = [
    ...
    'social_django',
]

AUTHENTICATION_BACKENDS = [
    'social_core.backends.github.GithubOAuth2',
]

Both libraries offer robust social authentication solutions for Python web applications. django-allauth is more Django-centric and provides a complete authentication package, while python-social-auth is more flexible and can be used with various web frameworks. The choice between them depends on the specific project requirements and the developer's preference for either a comprehensive solution or a more customizable approach.

4,878

The ultimate Python library in building OAuth, OpenID Connect clients and servers. JWS,JWE,JWK,JWA,JWT included.

Pros of Authlib

  • More comprehensive OAuth support, including OAuth 1.0a, OAuth 2.0, and OpenID Connect
  • Actively maintained with regular updates and improvements
  • Flexible and extensible architecture for custom integrations

Cons of Authlib

  • Steeper learning curve due to its more complex API
  • Less out-of-the-box support for specific social providers compared to Python Social Auth

Code Comparison

Python Social Auth:

from social_core.backends.google import GoogleOAuth2

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'your-key'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'your-secret'

Authlib:

from authlib.integrations.flask_client import OAuth

oauth = OAuth(app)
oauth.register(
    name='google',
    client_id='your-key',
    client_secret='your-secret',
    server_metadata_url='https://accounts.google.com/.well-known/openid-configuration'
)

Both libraries provide OAuth integration, but Authlib offers a more flexible approach with its register method, allowing for easier customization and support for various OAuth providers.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Python Social Auth

Python Social Auth is an easy-to-setup social authentication/registration mechanism with support for several frameworks and auth providers.

Crafted using base code from django-social-auth, it implements a common interface to define new authentication providers from third parties, and to bring support for more frameworks and ORMs.

Deprecation notice - 2016-12-03

As for Dec 03 2016, this library is now deprecated, the codebase was split and migrated into the python-social-auth organization_, where a more organized development process is expected to take place.

Details about moving towards the new setup is documented in the migrating to social_ document.

.. _python-social-auth organization: https://github.com/python-social-auth .. _migrating to social: https://github.com/omab/python-social-auth/blob/master/MIGRATING_TO_SOCIAL.md