Overview

Requirements

  • Python 3.5, 3.6, 3.7 or 3.8

  • Django (2.0+)

  • python-openid or python3-openid (depending on your Python version)

  • requests and requests-oauthlib

Supported Flows

  • Signup of both local and social accounts

  • Connecting more than one social account to a local account

  • Disconnecting a social account – requires setting a password if only the local account remains

  • Optional instant-signup for social accounts – no questions asked

  • E-mail address management (multiple e-mail addresses, setting a primary)

  • Password forgotten flow

  • E-mail address verification flow

Supported Providers

  • 23andMe (OAuth2)

  • 500px

  • AgaveAPI (OAuth2)

  • Amazon (OAuth2)

  • Amazon Cognito (OAuth2)

  • AngelList (OAuth2)

  • Apple (“OAuth2”)

  • Asana (OAuth2)

  • Auth0 (OAuth2)

  • Authentiq (OAuth2)

  • Azure (OAuth2)

  • Baidu (OAuth2)

  • Basecamp (OAuth2)

  • Battle.net (OAuth2)

  • Bitbucket (OAuth, OAuth2)

  • Bitly (OAuth2)

  • Box (OAuth2)

  • CERN (OAuth2)

  • Coinbase (OAuth2)

  • Dataporten (OAuth2)

  • Daum (OAuth2)

  • Digital Ocean (OAuth2)

  • Discord (OAuth2)

  • Disqus (OAuth2)

  • Douban (OAuth2)

  • Doximity (OAuth2)

  • Draugiem

  • Dropbox (OAuth, OAuth2)

  • Dwolla (OAuth2)

  • Edmodo (OAuth2)

  • Edx (open.edx.org) (OAuth2)

  • Eve Online (OAuth2)

  • Eventbrite (OAuth2)

  • Evernote (OAuth)

  • Exist (OAuth2)

  • Facebook (both OAuth2 and JS SDK)

  • Feedly (OAuth2)

  • Figma (OAuth2)

  • Firefox Accounts (OAuth2)

  • Flickr (OAuth)

  • FourSquare (OAuth2)

  • Github (OAuth2)

  • GitLab (OAuth2)

  • Globus (OAuth2)

  • Google (OAuth2)

  • Hubic (OAuth2)

  • Instagram (OAuth2)

  • JupyterHub (OAuth2)

  • Kakao (OAuth2)

  • Keycloak (OAuth2)

  • Line (OAuth2)

  • LinkedIn (OAuth, OAuth2)

  • Mail.Ru (OAuth2)

  • MailChimp (OAuth2)

  • Meetup (OAuth2)

  • Microsoft (Graph) (OAuth2)

  • Naver (OAuth2)

  • NextCloud (OAuth2)

  • Odnoklassniki (OAuth2)

  • Okta (OAuth2)

  • OpenId

  • OpenStreetMap (OAuth)

  • ORCID (OAuth2)

  • Patreon (OAuth2)

  • Paypal (OAuth2)

  • Persona

  • Pinterest (OAuth2)

  • QuickBooks (OAuth2)

  • Reddit (OAuth2)

  • Robinhood (OAuth2)

  • Salesforce (OAuth2)

  • ShareFile (OAuth2)

  • Shopify (OAuth2)

  • Slack (OAuth2)

  • SoundCloud (OAuth2)

  • Spotify (OAuth2)

  • Stack Exchange (OAuth2)

  • Steam (OpenID)

  • Stocktwits (OAuth2)

  • Strava (OAuth2)

  • Stripe (OAuth2)

  • Telegram

  • Trello (OAuth)

  • Tumblr (OAuth)

  • Twitch (OAuth2)

  • Twitter (OAuth)

  • Untappd (OAuth2)

  • Vimeo (OAuth, OAuth2)

  • VK (OAuth2)

  • Weibo (OAuth2)

  • Weixin (OAuth2)

  • Windows Live (OAuth2)

  • Xing (OAuth)

  • Yahoo (OAuth2)

  • Yandex (OAuth2)

  • YNAB (OAuth2)

  • Zoho (Oauth2)

  • Zoom (OAuth2)

Note: OAuth/OAuth2 support is built using a common code base, making it easy to add support for additional OAuth/OAuth2 providers. More will follow soon…

Features

  • Supports multiple authentication schemes (e.g. login by user name, or by e-mail), as well as multiple strategies for account verification (ranging from none to e-mail verification).

  • All access tokens are consistently stored so that you can publish wall updates etc.

Architecture & Design

  • Pluggable signup form for asking additional questions during signup.

  • Support for connecting multiple social accounts to a Django user account.

  • The required consumer keys and secrets for interacting with Facebook, Twitter and the likes are to be configured in the database via the Django admin using the SocialApp model.

  • Consumer keys, tokens make use of the Django sites framework. This is especially helpful for larger multi-domain projects, but also allows for easy switching between a development (localhost) and production setup without messing with your settings and database.