Skip to main content

Facebook open graph API client in python. Enables django applications to register users using facebook. Fixes issues with the official but unsupported Facebook python-sdk. Enables mobile facebook authentication. Canvas page authentication for facebook applications. FQL access via the server side api.

Project description

######################################################################
Django Facebook by Thierry Schellenbach (http://www.mellowmorning.com)
######################################################################

First
-----
Please contribute code :)

This project is actively maintained and I appreciate improvements to the code.

New in Version 2.0 Alpha
------------------------
* canvas page support for facebook applications
* mobile facebook registration support (tested with titanium FB flow)
* less requirements (jinja, view decorator, django notify and cjson requirements removed)
* fql support

About Django Facebook
---------------------
Django Facebook allows you to connect to the Facebook Open Graph API.
Integrated with Django it becomes easy to setup a login/register via Facebook flow for your users.

**Features**

* Access the Facebook API, from:
* Your website (Using javascript OAuth)
* Facebook canvas pages (For building facebook applications)
* Mobile (Or any other flow giving you a valid access token)
* Django User Registration (Convert Facebook user data into a user model
* Use Facebook data to register a user with your Django app. Facebook connect using the open graph API.
* Facebook FQL access

Works best with
---------------
* Django registration

TODO (again help is appreciated!)
---------------------------------
* testing (especially a dummy FB api)
* separate user data conversion and FB api improvements
* fully replace the facebook GraphAPI which they no longer support


Installation
------------

Download the source code or use pip install django_facebook.


**Create a Facebook App**

In case you don't yet have a facebook app. You need an app to use the open graph api and make the login process work.
You can create a facebook app at this url: http://www.facebook.com/developers/createapp.php

**Settings**

Define the following settings in your settings.py file:
FACEBOOK_API_KEY

FACEBOOK_APP_ID

FACEBOOK_APP_SECRET

**Url config, context processor, auth backend**

add this line to your url config
(r'^facebook/', include('django_facebook.urls')),

add this line to your context processors
'django_facebook.context_processors.facebook',

add this to your AUTHENTICATION_BACKENDS
'django_facebook.auth_backends.FacebookBackend',

**Update your models**

Add the following fields to your profile model:
about_me = models.TextField(blank=True, null=True)
facebook_id = models.IntegerField(blank=True, null=True)
facebook_name = models.CharField(max_length=255, blank=True, null=True)
facebook_profile_url = framework_fields.URLTextField(blank=True, null=True)
website_url = framework_fields.URLTextField(blank=True, null=True)
blog_url = framework_fields.URLTextField(blank=True, null=True)
image = models.ImageField(blank=True, null=True)
date_of_birth = models.DateField(blank=True, null=True)

An abstract model is specified for convenience django_facebook/models.py FacebookProfileModel

**Configure the template**

This is the hardest step of the install.
For an example you can look at connect.html in the templates directory.

First load the javascript (it loads the facebook library asynchronously).
I recommend that you insert this code at the bottom of your page.

<script src="{{ MEDIA_URL }}js/original/facebook.js" type="text/javascript"></script>
<script>
facebookAppId = '{{ FACEBOOK_APP_ID }}';
function facebookJSLoaded(){
FB.init({appId: facebookAppId, status: false, cookie: true, xfbml: true});
}
window.fbAsyncInit = facebookJSLoaded;
F = new facebookClass(facebookAppId);
F.load();
</script>

Subsequently implement a form which calls Facebook via javascript.
<form action="{% url facebook_connect %}?facebook_login=1" method="post">
<a href="javascript:void(0);" style="font-size: 20px;" onclick="F.connect(this.parentNode);">Register, login or connect with facebook</a>
<input type="hidden" value="{{ request.path }}" name="next" />
</form>


Django Jobs
-----------
Do you also see the beauty in clean code? Are you experienced with high scalability web apps?
Currently we're looking for additional talent over at our Amsterdam office.
Feel free to drop me a line at my personal email for more information: thierryschellenbach[at]gmail.com

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-facebook-2.0.2.zip (17.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page