September 29th, 2008 by Eddie Sullivan
Welcome to the third part in my series of posts about creating a
Facebook application. I am using Django as my web development
framework, and this post will focus on some of the backend
techniques I have worked out to make this work easier. This is
not a tutorial, but a set of tools that I have developed. This
is a long post, with a lot of source code; I hope you find at
least some of it useful.
Keep in mind as you read this that the Facebook platform is
still very new, and likely to change. In fact, if you're a FB
user, you are probably aware they recently completed a major
transition to a new profile design. This included many changes
behind the scenes for developers, some of which are still
playing out. I recommend keeping up with
the Facebook
Platform Developer Forum and
the Facebook
Developer Blog.
Also, I will assume you have already read
the API
Documentation and the documentation
for PyFacebook,
and that you know how to create a web app
using Django. If not,
you will want to start there.
Read the rest of this entry »
Posted in JavaScript, django, facebook, programming, python - 3 Comments »
August 17th, 2008 by Eddie Sullivan
Welcome to the second part in my series of posts about creating
a Facebook application. I am using Django as my web development
framework, but this post doesn't have much to do with Django,
since it deals with the front end. In particular, it talks about
how to write JavaScript that can work both in and out of
Facebook.
As I mentioned last time, Facebook lets developers use a subset
of JavaScript, which they call FBJS. The FBJS is transformed on
the fly into JavaScript as the page is loaded. All variables and
functions you define or reference are prepended with a string
like "a123456789_", including calls
to document.getElementById
and setTimer and the like. This is
done in order to restrict what you can do with DOM elements, to
avoid cross-site-scripting attacks and unwanted user-hostile
behavior. FBJS is fairly well documented, so if you plan to do
some Facebook JavaScript development, you should start there.
The biggest restriction that FBJS imposes is that you can no
longer access the attributes of DOM elements directly, but must
go through an abstraction API consisting of a series of setters
and getters. For example, instead of saying something like
imageEl.src = myImageUrl, you instead need
to call imageEl.setSrc(myImageUrl).
Read the rest of this entry »
Posted in JavaScript, django, facebook, programming, python - 1 Comment »
July 18th, 2008 by Eddie Sullivan
Facebook made a splash a year or two ago when they opened up their API. Now developers could write applications that integrate with the site. Instantly, users -- many of whom had fled to Facebook from a spam-filled MySpace -- were inundated with Requests to battle ninjas and News Items bearing obscene pictures. To Facebook's credit, they did clamp down and put some restrictions on what apps can do. A few entertaining or useful applications have risen to the top, and the potential of the API is ready to be exploited. It's not an easy task for a developer, however.
In the next few Chicken Scratches posts, I'll talk about my experience developing two Facebook apps from scratch:
The Limerick Book, a site that works both in and outside of Facebook and allows users to share and rate Limericks, and
Play Scopa, a traditional Italian card game that users can play against each other in realtime (this one is not yet launched to the public).
This first post discusses some of the difficulties I have run into. In the next couple posts, I'll discuss how I dealt with them. First, to set the scene:
My setup
I am using the
Django web framework for my backend development, the latest SVN version running with Python version 2.4 on a shared host at
Dreamhost. In fact, it's the same server I use for this site and weblog. To connect Django to Facebook, I am using the nice
PyFacebook library, which is pretty mature, though I had to modify the code to support some of the latest features of the Facebook API.
And now, on to the perils.
Read the rest of this entry »
Posted in django, facebook, programming, python - No Comments »