Django Social Registration enables developers to add alternative registration methods based on third party sites.
- django
- oauth2
- python-openid
- python-sdk
- Add the
socialregistration
directory to yourPYTHON_PATH
. - Add
socialregistration
to yourINSTALLED_APPS
settings of Django. - Add
socialregistration.urls
to yoururls.py
file.
A necessary backwards-incompatible change was made 9/16/2010 to use Generic ForeignKeys instead of a direct tie to users. This change makes socialregistration more about authentication / linking of social accounts to any object (organizations, users, groups, etc.) The migration 0003_add_generic_relation_fields will add the necessary fields (object_id and content_type) 0004_migrate_existing_profiles will take all profiles created for your users and "convert" them to use Generic ForeignKeys instead. Another migration 0005_remove_user_tie will drop the "user" column.
Add
FACEBOOK_API_KEY
andFACEBOOK_SECRET_KEY
to your settings file representing the keys you were given by Facebook.Add
socialregistration.auth.FacebookAuth
toAUTHENTICATION_BACKENDS
in your settings file.Add
socialregistration.middleware.FacebookMiddleware
toMIDDLEWARE_CLASSES
in your settings file.Add tags to your template file:
{% load facebook_tags %} {% facebook_button %} {% facebook_js %}
Add the following variables to your
settings.py
file with the values you were given by Twitter:TWITTER_CONSUMER_KEY TWITTER_CONSUMER_SECRET_KEY TWITTER_REQUEST_TOKEN_URL TWITTER_ACCESS_TOKEN_URL TWITTER_AUTHORIZATION_URL
Add
socialregistration.auth.TwitterAuth
to yourAUTHENTICATION_BACKENDS
settings.Add tags to your template file:
{% load twitter_tags %} {% twitter_button %}
Please refer to the Twitter implementation of the signup / login process to extend your own application to act as a consumer of other OAuth providers. Basically it's just plugging together some urls and creating an auth backend, a model and a view.
Add
socialregistration.auth.OpenIDAuth
toAUTHENTICATION_BACKENDS
in your settings.Add tags to your template file:
{% load openid_tags %} {% openid_form %}
You can use the standard {% url auth_logout %} url to log users out of Django. Please note that this will not log users out of third party sites though. Logging out a Facebook user might look something like this:
<a href="#" onclick="javascript:FB.logout(function(response){ document.location = '{% url auth_logout %}' })">Logout</a>
To log users out of other third party sites, I recommend redirecting them further to the OAuth / OpenID providers after they logged out of your site.
If you wish everything to go through HTTPS, set SOCIALREGISTRATION_USE_HTTPS
in your settings file to
True
.
If you don't wish your users to be redirected to the setup view to create a username but rather have
a random username generated for them, set SOCIALREGISTRATION_GENERATE_USERNAME
in your settings file to True
.