Back to Posts List


Rails and Facebook: Why (still) iFrame is better than FBML

What most people don’t realize, is that there is not need to choose.

You can (not easily though) to get your iFrame application to handle and use FBML tags in a cool hybridy-ee way, and by that scoring the most points you can with both approaches.

Using iFrame has it’s issues of course, you are going to lose primeraly the basics of the Facebook UI tools (tabs, borders and such) and you’ll find yourself sometimes having rendered the entire Facebook layout in your iFrame, thau causing it to appear twice (some say twice too many).

What’s good about choosing the iFrame approach is that:

  • Complete control over your content. You’re essentially communicating back and forth with your own server; no middleman. FBML requires that you return your content, which can contain html and fbml, back to Facebook. They parse it and render your content.
  • Javascript/Ajax considerations. FBML application type parses all your css and javascript and prepend all styles and methods with a unique app number such that all methods go from ‘do_this()’ to something like, ‘app_23423423_do_this()’. This creates a lot of extra work for you, especially if you are using Ajax in your app. Further more,? some events are not allowed at all, while listeners are allowed.
  • iframe allows you to develop locally.
  • Rails and RESTful routing. If your application takes advantage or RESTful routing and you choose FBML you will be required to adjust for the fact that all requests to your callback url from Facebook are POST requests, which obviously is a pretty big problem.

There are some things you don’t get, but they are mainly UI things like the styles and tabs that make your content look more like Facebook content. Even if you choose iframe, you can pass the param

fb_force_mode=fbml to take advantage of the things that really are useful such as the request forms and other FBML tags (therefore the hybrid theory :) )


blog comments powered by Disqus

I Don't have cookies.


Variable Value
{ '' => [ '#rubyonrails', '#railsbridge', '#ruby', '#mootools' ]}

You're seeing this error because I think it is funny.