Completely replace Django's authentication with Facebook. Make sure you're using the well maintained version of the facebook-sdk, available at:
Switch branches/tags
Nothing to show
Pull request Compare This branch is 8 commits ahead, 11 commits behind aidanlister:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Facebook integration with your Django website


Simply add django_facebook to your INSTALLED_APPS and configure the following settings:


# Custom settings
FACEBOOK_EXTENDED_PERMISSIONS = []  # Ex: ['email', 'user_birthday']

# Optionally for debugging


A few helpers for using the Javascript SDK can be enabled by adding this to your base template in the <head> section:

{% load facebook %}
{% facebook_init %}
  {% block facebook_code %}{% endblock %}
{% endfacebook %}

And this should be added just before your </html> tag:

{% facebook_load %}

The facebook_load template tag inserts the code required to asynchronously load the facebook javascript SDK. The facebook_init tag calls FB.init with your configured application settings. It is best to put your facebook related javascript into the facebook_code region so that it can be called by the asynchronous handler.

You may find the facebook_perms tag useful, which takes the setting in FACEBOOK_EXTENDED_PERMISSIONS and prints the extended permissions out in a comma-separated list.

<fb:login-button show-faces="false" width="200" max-rows="1"
  perms="{% facebook_perms %}"></fb:login-button>

A helpful debugging page to view the status of your facebook login can be enabled by adding this to your url configuration:

(r'^facebook_debug/', direct_to_template, {'template':'facebook_debug.html'}),  

Once this is in place you are ready to start with the facebook javascript SDK!

This module also provides all of the tools necessary for working with facebook on the backend:


This provides seamless access to the Facebook Graph via request object.

If a user accesses your site with a valid facebook cookie, your views will have access to request.facebook.graph and you can begin querying the graph immediately. For example, to get the users friends:

def friends(request):
  if request.facebook:
    friends = request.facebook.graph.get_connections('me', 'friends')

To use the middleware, simply add this to your MIDDLEWARE_CLASSES: 'django_facebook.middleware.FacebookMiddleware'

FacebookDebugCookieMiddleware allows you to set a cookie in your settings file and use this to simulate facebook logins offline.

FacebookDebugTokenMiddleware allows you to set a uid and access_token to force facebook graph availability.


This provides seamless integration with the Django user system.

If a user accesses your site with a valid facebook cookie, a user account is automatically created or retrieved based on the facebook UID.

To use the backend, add this to your AUTHENTICATION_BACKENDS: 'django_facebook.auth.FacebookBackend'

Don't forget to include the default backend if you want to use standard logins for users as well: 'django.contrib.auth.backends.ModelBackend'


@facebook_required is a decorator which ensures the user is currently logged in with facebook and has access to the facebook graph. It is a replacement for @login_required if you are not using the facebook authentication backend.