0
0
DjangoHow-ToBeginner · 4 min read

How to Use Social Login in Django with Allauth

To use social login in Django, install and configure the django-allauth package which supports OAuth providers like Google and Facebook. Add it to your INSTALLED_APPS, configure authentication backends, and set up provider credentials to enable users to log in via social accounts.
📐

Syntax

Using social login in Django mainly involves configuring django-allauth. Key parts include:

  • INSTALLED_APPS: Add allauth apps.
  • AUTHENTICATION_BACKENDS: Include allauth backends.
  • urls.py: Include allauth URLs.
  • Provider settings: Add OAuth client IDs and secrets in settings.py.
python
INSTALLED_APPS = [
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',  # or other providers
    # ... other apps
]

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
]

SITE_ID = 1

# OAuth credentials example
SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'APP': {
            'client_id': '<your-client-id>',
            'secret': '<your-client-secret>',
            'key': ''
        }
    }
}

# urls.py
from django.urls import path, include

urlpatterns = [
    path('accounts/', include('allauth.urls')),
]
💻

Example

This example shows a minimal Django project setup to enable Google social login using django-allauth. It demonstrates the necessary settings and URL configuration.

python
# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
]

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
]

SITE_ID = 1

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'APP': {
            'client_id': 'your-google-client-id.apps.googleusercontent.com',
            'secret': 'your-google-client-secret',
            'key': ''
        }
    }
}

# urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('allauth.urls')),
]

# Run migrations and start server
# python manage.py migrate
# python manage.py runserver
Output
Server runs at http://127.0.0.1:8000/ Visiting http://127.0.0.1:8000/accounts/login/ shows login page with social login options.
⚠️

Common Pitfalls

Common mistakes when setting up social login in Django include:

  • Not adding django.contrib.sites and setting SITE_ID.
  • Missing allauth apps in INSTALLED_APPS.
  • Forgetting to include allauth URLs in urls.py.
  • Incorrect OAuth client ID or secret.
  • Not configuring authentication backends properly.

Always check OAuth provider console for correct redirect URIs.

python
### Wrong settings example (missing SITE_ID and backends):
INSTALLED_APPS = [
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
]

# Missing SITE_ID and AUTHENTICATION_BACKENDS causes login failure

### Correct settings example:
INSTALLED_APPS += ['django.contrib.sites']
SITE_ID = 1

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
]
📊

Quick Reference

  • Install django-allauth via pip install django-allauth.
  • Add required apps and SITE_ID in settings.py.
  • Configure OAuth credentials in SOCIALACCOUNT_PROVIDERS.
  • Include allauth URLs under /accounts/.
  • Run migrations and test login at /accounts/login/.

Key Takeaways

Use django-allauth to easily add social login to Django projects.
Always add django.contrib.sites and set SITE_ID for allauth to work.
Configure authentication backends to include allauth's backend.
Set correct OAuth client ID and secret from your social provider.
Include allauth URLs to enable login and callback routes.