================================================ A toolset to use facebooks graph api with django ================================================ Graph helper tools: ============================== * add 'facebook' to your INSTALLED_APPS. This will create django classes for the main facebook models. * add 'SignedRequestMiddleware' to your settings.MIDDLEWARE. * optionally add 'AppRequestMiddleware' if you need to deal with app requests. * add url(r'^facebook/', include('facebook.urls')), to your * create an app settings dict as described in for each of your apps. I recommend using a different settings file for local development. * for client side utilities add fb_utils to your html template and follow the instructions in the comments section. Now you can generate a graph instance with the following command:: from facebook.utils import get_graph graph = get_graph(request) To make a graph request to facebook simply use graph.request. I.e. to get a certain message object:: fb_message = graph.request('%s' % post_id) You can also create facebook user objects like so:: from facebook.models import User user = User(['id']) user.get_from_facebook(graph=graph, save=True) The app stores as much data as possible in the session to minimize requests to Facebook. You can access the session class directly to get informations about the current user:: fb = request.fb_session signed_request = fb.signed_request Facebook Models =============== The facebook app adds the models: Users, Events, Pages, Photos, Posts and Requests to the admin interface. Django can fetch the data from facebook on save and store it locally. It is not yet possible to create a model this way and upload it to facebook except for Photos. There is a login button so you can access private data as well. Simple usage of Facebook Auth: ============================== * add 'facebook' to your INSTALLED_APPS. it will create a table where to store all connected facebook users. * add 'facebook.backends.authentication.AuthenticationBackend' to AUTHENTICATION_BACKENDS * add url(r'^accounts/', include('facebook.backends.registration.urls')) to your urls * now you can insert the facebook button: <fb:login-button perms="email" onlogin="window.location.href='{% url auth_login %}?next={{ request.get_full_path }}'"></fb:login-button> Client side utilities: ====================== * FQ Facebook queue that gets executed when the user login status is clear. Use FQ.add(function(){...}); * fb object that contains the user details and permissions. * async init method with channel URL. Some fixes for IE. * a log function that can record client side responses back to the server. Test Users: =========== Facebook allows you to have an army of test users to test your apps. While DEBUG is True, you can see the testuser model in the admin frontend. To create a testuser for your app use the following command:: ./ create_testuser -i To show a list of registered testusers attached to your app type:: ./ testusers This will give you a list with the names and login-URLs of the testusers. A star in front of the name means the testuser has installed your app. To friend testusers you can use the following command:: ./ friend <TESTUSER-id> [<TESTUSER-2-id>] If TESTUSER-2-id is not specified, the app will try to friend every testuser. Testusers must have the app installt to allow friend relationships through this command. There is also a fb_testuser_menu template tag. The tag adds a select menu that allows you to select a testuser. You are then redirected to the facebook page of that test user (and logged in). The tag has to fetch the login-url for every testuser associated to the app and might be a bit slow when you have a lot of test users installed. I suggest putting the tag in the admin template. Template Tags: ============== {% fb_app_settings %} Adds a (X) button that links to the Facebook page where you can deauthorize your app. {% query_page_fan %} returns True if the user is fan of the page where the app tab is in. {% fb_app_id [app_name] %} Returns the app id. Similiar tags for canvas page, canvas_url, redirect url and domain.


Project Slug


Last Built

5 years, 1 month ago passed


Home Page



django, python, facebook

Short URLs

Default Version


'latest' Version