A stable Facebook authentication backend for Django >= 1.4.
Requires Celery for background token operations.
django-facebook-auth can be installed as a normal Python package.
Example instalation for pip:
$ pip install django-facebook-auth
This project requires working Celery integration. In case you are new to Celery, the First steps with Django tutorial will help you to hit the ground running.
Set USE_TZ = True
Add facebook_auth to INSTALLED_APPS:
INSTALLED_APPS = ( ... 'facebook_auth', ... )
Add authentication backends to AUTHENTICATION_BACKENDS:
AUTHENTICATION_BACKENDS = ( ... 'facebook_auth.backends.FacebookBackend', 'facebook_auth.backends.FacebookJavascriptBackend', ... )
Set necessary Facebook properties:
FACEBOOK_CANVAS_URL = 'http://pozytywnie.pl/' # root of your domain FACEBOOK_APP_ID = '1234567890' FACEBOOK_APP_SECRET = '91162629d258a876ee994e9233b2ad87'
The authentication flow is very straightforward:
Redirect your user to Facebook OAuth endpoint using redirect_uri prepared with the help of this library.
First in your view or context processor prepare the necessary parameters for the Facebook OAuth endpoint:
from facebook_auth.urls import redirect_uri def login(request): ... context.update({ 'redirect_uri': redirect_uri('/login/success', '/login/fail'), 'client_id': settings.FACEBOOK_APP_ID, 'scope': 'email' }) ...
And embed the link in your template:
<a href="https://www.facebook.com/dialog/oauth?client_id={{ client_id }}&scope={{ scope }}&redirect_uri={{ redirect_uri }}">Login using Facebook</a>
User is redirected back to django-facebook-auth authentication handler, which either authenticates the user or refuses to do so.
Prepare a separate view for each scenario.
A best token for authenticated user is negotiated with Facebook in the background, using your Celery worker.