First, let me introduce myself and my role in the project. I’m the senior user interface engineer for citysearch.com (a website that helps you find local businesses). I’ve been working, along with my colleages at Citysearch and the Facebook Connect team, to make the experience of using your Facebook login on Citysearch as seamless as possible.
So, what the heck is this Facebook Connect thing? Basically, it lets you log in to Citysearch using your Facebook account. Then when you write a review of a business on citysearch.com you can push it to your facebook feed at the same time. You can also see your other Citysearch/Facebook friends and the reviews that they have written on Citysearch.
We are combining the strengths of each website, Citysearch’s now hyper-local geography model, creating a home page for something like 75,000 neighborhoods, with Facebook’s ability to instantly connect you with all of your friends (and these days just about everyone is on Facebook). This creates a vital connection between messing around online, and finding a real world business or service.
“Okay, so you’ve got a local search website with a community writing reviews, so what’s the difference between that and say, Yelp?” you may ask. I would propose that with Facebook you get to share your favorite places with YOUR friends. Whereas on Yelp you are being asked to interact with a social clique which you may not be a part of.
Now, I am not without concerns about this integration, and here’s where any non-tech folk may want skip a few paragraphs.
To tell you what I don’t like about the basic premise of the way Facebook Connect works, first I’m going to talk a little bit about the right way to add JavaScript interactivity to a site. It’s called Progressive Enhancement. First you build a solid foundation, meaningful HTML. You set up your pages so that data is being passed consistently between server and browser using the technology of your choice, whether it’s a big corporate place using Java, or an agile satellite team using PHP. Next you make everything look pretty by adding a layer of CSS. Only then do you hijack that server interaction, attaching Ajax behavior with JavaScript to create a more interactive experience.
So that’s the problem that I have with the Facebook integration. The entire connection between the two sites is based on a hack, using JavaScript to create an iframe, and then passing information back and forth by reading the source of the iframe. For a more complete explanation, you can look at their diagram.
Now that’s not to say that I’m as strong a developer as some of the folks on the Facebook Connect team, or that a server side API would be as accessible to as many casual developers as a JavaScript API is. Only that a server side solution would have been more robust, and less susceptible to the vagaries of various web browsers.
Non-tech folks start again here :-)
Now, having said all that, once Citysearch and Facebook Connect are out of beta, I think we will have a very solid and nearly seamless interaction between the two sites. In fact, we think it’s working well enough that we invite you to try it out right now at this address:
You can use the “Sign in Using Facebook” link at the top. Or search for the last restaurant you ate at, use the “Write a review” button in the middle of the page. You will see a couple forms that you can ignore, and click the big blue “Connect with Facebook” button.
In the future I’m looking forward to greater speed and reliability from Facebook, richer interactivity between Facebook friends on Citysearch, and I’ve got some interface kinks to work out myself.