Skip to main content

A Django app for providing the Google's discovery based Oauth2 authentication mechanism is HTTP/HTTPS oriented Django Servers/Projects.

Project description

Google Auth [ Django ]

PyPI version Python versions Django versions Downloads License Documentation tests coverage pages-build-deployment Pylint

Official Documentation Demo Integration / Samples

Why django-gauth?

Google sign-in for Django in 5 minutes โ€” without the django-allauth configuration maze.

django-gauth does exactly one thing well: add Google OAuth2 login to an HTTP/HTTPS Django project, with a working landing page included โ€” no multi-provider abstractions, no sprawling configuration, just the Google flow, clearly documented.

django-gauth django-allauth Roll-your-own
Setup for just Google โšก Minimal (3 settings + 1 URL include) ๐Ÿงฉ Broad, multi-step config ๐Ÿ› ๏ธ Manual OAuth wiring
Built-in login page โœ… Ships a landing page โž– Bring your own templates โŒ Build it yourself
Nested & dynamic auth (return-to-origin) โœ… Built-in schemes โž– DIY โŒ DIY
Session lifecycle (auto-refresh + revoking logout) โœ… Built-in, configurable policy โž– DIY โŒ DIY
Scope ๐ŸŽฏ Google OAuth2 only ๐ŸŒ Many providers ๐ŸŽฏ Whatever you build
Needs a User model + migrations โœ… No โ€” session-only โž– Yes โ€” DB-backed ๐Ÿ› ๏ธ Up to you
Learning curve ๐Ÿ“‰ Low ๐Ÿ“ˆ Higher (large surface) โš ๏ธ Easy to get OAuth subtly wrong
Typed & tested โœ… Type hints + 100% coverage โœ… Mature โž– Up to you

Reach for django-allauth or python-social-auth when you need real user accounts โ€” a User row per person, many providers, account linking, or email workflows. Reach for django-gauth when you just need to answer "is this a signed-in Google user?" for an SPA or API backend โ€” session-only, no User model, no migrations โ€” with a JSON /gauth/session probe and a configurable session policy.

โ„น๏ธ Transparent refresh and SPA support aren't unique (social-auth has a refresh helper; allauth has a Headless API). django-gauth's contribution is delivering them in that stateless, User-model-free setting โ€” where you'd otherwise wire it by hand.

โœจ Standout feature โ€” Nested & Dynamic Auth

Modern UIs place the "Sign in with Google" button inline โ€” inside modals, deep within a workflow, or when a session expires mid-task. django-gauth brings users back to the exact page (and state) they authenticated from, out of the box โ€” no more dumping them on a generic dashboard.

  • ๐ŸŽฏ Return-to-origin redirection โ€” send users straight back to where they started.
  • ๐Ÿงฉ SPA-ready โ€” first-class support for React/Vue via query-parameter or header schemes (PRESERVE_ORIGIN_QP / PRESERVE_ORIGIN_HP), with redirect or json responses.
  • ๐Ÿ”’ Safe by default โ€” origins are same-origin validated to block open-redirect attacks.

๐Ÿ“Œ Availability: This feature is available in django-gauth >= 0.3.0.

๐Ÿ‘‰ Read about Redirection Schemes โ†’

โœจ Standout feature โ€” Django User Integration (opt-in)

Want request.user, @login_required, and admin login backed by Google โ€” without an extra User model, a token table, or migrations? Flip one switch and django-gauth maps Google identities onto your project's existing AUTH_USER_MODEL:

  • ๐Ÿ‘ค Real request.user โ€” @login_required, LoginRequiredMixin, and the Django admin just work.
  • ๐Ÿงฉ Zero django-gauth migrations โ€” get-or-create on your existing auth_user; no models of our own.
  • ๐Ÿ›ก๏ธ Safe by default โ€” verified-email gated, unusable passwords, and a manage.py check for misconfig.
  • ๐Ÿ”Œ Dual-mode guards โ€” gauth_required / GauthRequiredMixin work with or without integration.

๐Ÿ“Œ Availability: This feature is available in django-gauth >= 0.3.0.

โš ๏ธ Limitation: The view-protection guards (gauth_required / GauthRequiredMixin) support Django native views only โ€” they are not compatible with Django REST Framework views (APIView, ViewSet, @api_view). DRF-native adapters are planned; until then, protect DRF endpoints with DRF's own authentication/permission classes. See the troubleshooting notes.

๐Ÿ‘‰ Read about Django User Integration โ†’

Installation

Source Command
GitHub pip install -e git+https://github.com/masterPiece93/django-gauth.git#egg=django_gauth
PyPi pip install django-gauth

๐Ÿ“Œ Compatibility note: If you must stay on django-gauth < 0.2.1, pin google-auth-oauthlib<1.3.0,>=1.0.0 in your project requirements to avoid PKCE-related OAuth failures. Higher Versions 0.2.1+ pin this for you, so no need to worry with them!

Quickstart

  1. add the app name : django_gauth in INSTALLED_APPS entry of you project ( in settings.py file )

  2. add required configuration variables ( in settings.py file )

    # settings.py
    GOOGLE_CLIENT_ID= env("GOOGLE_CLIENT_ID")           # << set according to your oauth2 client
    GOOGLE_CLIENT_SECRET= env("GOOGLE_CLIENT_SECRET")   # << set according to your oauth2 client
    GOOGLE_AUTH_FINAL_REDIRECT_URL= None        # defaults to `<host>/gauth/`
    CREDENTIALS_SESSION_KEY_NAME= "credentials" # defaults to `credentials`
    STATE_KEY_NAME= "oauth_state"               # defaults to `oauth_state`
    SCOPE= [
        "https://www.googleapis.com/auth/userinfo.email"    # always preffered
        ,"https://www.googleapis.com/auth/userinfo.profile" # always preffered
        ,"openid"                                           # always preffered
        ,"https://www.googleapis.com/auth/drive"            # based on your usage
    ]
    os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'         # strictly for local-development only
    
    • os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1' directs the server to accept in-secure (http) connections .
  3. configure auth urls ( in urls.py file of root )

    # urls.py
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('gauth/', include('django_gauth.urls')),
        
        # add your other app's urls
        # ...
    
    ]
    
  4. now run your project server

    • once your server is up & running , navigate to .../gauth, this is the master interface ( default landing page )
    • click on Authenticate button to launch Google Oauth2 Login .
    • just follow the flow you are directed to .
    • post authentication , you'll be redirected back to .../gauth
  • NOTE : useually all servers ( wsgi, asgi, uWsgi) runs default on http://127.0.0.1:PORT/ , hence always take care to set the redirect endpoints in your google oauth2 client app in accordance with 127.0.0.1 , don't mistake to consider localhost , 0.0.0.0 and 127.0.0.1 as the same thing while dealing with redirect uri's .
    • For example : suppose you have set http://localhost:PORT/gauth/google-callback as your redirect uri , then take note of running your django app on localhost:PORT only !!

Changelog

See CHANGELOG.md for the full release history and notable changes in each version.


Releases

See Github Releases for the details of each release in each version .


Download files

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

Source Distribution

django_gauth-0.3.1.tar.gz (95.5 kB view details)

Uploaded Source

Built Distribution

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

django_gauth-0.3.1-py3-none-any.whl (65.4 kB view details)

Uploaded Python 3

File details

Details for the file django_gauth-0.3.1.tar.gz.

File metadata

  • Download URL: django_gauth-0.3.1.tar.gz
  • Upload date:
  • Size: 95.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for django_gauth-0.3.1.tar.gz
Algorithm Hash digest
SHA256 51861bc930195cfed5066600a12792ddec38652020abd0ed09b00e46c534173e
MD5 92b87603cbc9ad47bb70b7ae3873250c
BLAKE2b-256 8f4121a9b46b7dc4ba90329716f33b70e4ac893c6836082f8137439d406cb9b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_gauth-0.3.1.tar.gz:

Publisher: release.yml on masterPiece93/django-gauth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_gauth-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: django_gauth-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 65.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for django_gauth-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 00cb8624be07dc295f9faeef2923ba262518e40fde3a56fef0fed6038576a69f
MD5 a2894a221269ee1c1441a9ff50f54571
BLAKE2b-256 ace31894880687f2c137e46fb01bb189b1fc75652f93513db698d3f58c9ebbf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_gauth-0.3.1-py3-none-any.whl:

Publisher: release.yml on masterPiece93/django-gauth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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