django-sauth

django sauth is an easy to setup social authentication/registration mechanism with support for several auth providers.


Keywords
django, oauth, social, auth
License
MIT
Install
pip install django-sauth==0.1.1.1

Documentation

django-sauth

Sauth Provide the social media authentication and authorization for django applications.

SAUTH - Social Media Authentication Component

DEMO

demo project: https://django-sauth.herokuapp.com/

Overview

Sauth Provide the social media authentication and authorization for django applications.

Dependencies

OAuth 2.0 support depends on python-oauth2 Twiiter support depends on Twython The backends(social media provider) demands the application registration on their corresponding website. Facebook Linkedin google Twitter

Dependency Package Installation

pip install twython or easy_install twython pip install oauth2

Installation

from pypi

pip install django-sauth or easy_install django-sauth

from github , clone the project django-sauth

https://github.com/renjith-tring/django-sauth

Configuration

integrate sauth with django based applications

settings.py

Install sauth in python path(virtualenv) and add the package in to installed apps

    INSTALLED_APPS = ( ‘.................’,
                              'sauth',
                      )

Sauth providing two approach Collect all the data from the provider and display into json format and you can easily process the data in to your needs , it will be good approach for Rest Api applications. No need syncdb or migrate Collect the data from the provider , store into the database and make sure user into Authenticated with the system. Need syncdb or migrate(depend on django version)

Following second approach Add SauthAuthBackend in AUTHENTICATION_BACKENDS in settings.py

       AUTHENTICATION_BACKENDS = (
              'sauth.backends.sauthcommonbackend.SauthAuthBackend',
               'django.contrib.auth.backends.ModelBackend',)

Add The SauthExceptionMiddleware in MIDDLEWARE_CLASSES

      MIDDLEWARE_CLASSES = (
             'sauth.middleware.middleware.SauthExceptionMiddleware',
          )

Urls.py

urlpatterns = patterns('', ………………………………….., url(r'^', include('sauth.urls')), ……………………………………, )

Authentication with Facebook

Create the application in facebook developer account[ https://developers.facebook.com/quickstarts/?platform=web]

Add App id and Secrect key in settings.py

FACEBOOK_API_KEY = '******************' FACEBOOK_SECRET_KEY = '**************************************' FACEBOOK_APP_ID = FACEBOOK_API_KEY

SAUTH_REDIRECT_URL = 'http://localhost:8000/complete/' [ Testing redirect url for google and linkedin is ‘http://127.0.0.1:8000/complete/’ , for production for all the provider please add the redirect url like this[ eg: www.example.com/complete / ] SAUTH_FACEBOOK_SCOPE = [ ] # your choice, list format [ ‘scope1’,’scope2..’] [ default : ['user_about_me','public_profile','email'] ]

SAUTH_FACEBOOK_EXTRA_FIELDS = [ ] #your choice , list format [‘field1’,’field2’,..] [ default : ['id','first_name','last_name','email','gender'] ]

optional [ second approach ]

SAUTH_AFTER_AUTH_URL = '/login/complete' SAUTH_CREATE_AUTH_USER = True

SAUTH_LOGIN_ERROR_URL = 'sautherror' [ url name ]

[ default error will be shown by json format , if you need to get the errors in your views function you can add the url name here , you can easily get the error from session status : request.session['error_status'] description : request.session['error_desc'] reason : request.session['error_reason'] ]

Authentication with Linkedin

Create the Application in linkedin developer account[
https://www.linkedin.com/developer/apps/new?csrfToken=ajax%3A2134433661926155952 ]

LINKEDIN_CLIENT_ID = '***********************' LINKEDIN_SECRET_KEY = '***************************' SAUTH_LINKEDIN_SCOPE = [ ] #your choice list format [ default:['rw_company_admin','r_basicprofile','w_share','r_emailaddress'] ]
SAUTH_LINKEDIN_EXTRA_FIELDS = ( ‘l-filed1’ ,...,) # your choice in tuple format [ default : (id,skills,first-name,last-name,positions:(company:(name)),formatted-name,date-of-birth,industry,email-address,location,headline,picture-urls::(original)) ]

Authentication with Twitter

Create the application with twitter developer account [ https://apps.twitter.com/app/new ]

TWITTER_KEY = “ ” TWITTER_SECRET = “ ”

Authentication with Google account

Create the application with google developer account : [ https://console.developers.google.com/projectselector/apis/library ]

GOOGLE_KEY = “***************.apps.googleusercontent.com” GOOGLE_SECRET_KEY = “ ********************** ” SAUTH_GOOGLE_SCOPE = [ ‘scope1’,’..2’, ] # your choice in list field

[ default : ['plus.login', 'plus.me', 'userinfo.email', 'userinfo.profile'] ]

How to Use .

backends

1) facebook 2) twitter 3) google 4) linkedin-oauth2

Authorization url is :

htpp://127.0.0.1:8000/auth/backend(eg:facebook)