Download - So you want to build a facebook App ?
So you want to builda Facebook appFacebook Developer Garage Kuala Lumpur
Kamal Fariz, RSB
Basic Ingredients
http://www.facebook.com/apps/application.php?id=2345053339
Ruby on Rails
rfacebook gem
STEP 1
Setup a new application
STEP 2
Create a Rails app
A full-stack framework for developing database-backed web applications according to the Model-View-Controller pattern.
A full-stack framework for
developing database-backed
web applications according
to the Model-View-Controller
pattern.
A bunch of stuff that makes web developers
happy!
- David Heinemeier Hansson http://flickr.com/photos/pragdave/174964316/
MacBook-Pro:~ kamal$ rails super_gifts
MacBook-Pro:~ kamal$ rails super_gifts create create app/controllers create app/controllers/application.rb create app/helpers/application_helper.rb create test/test_helper.rb create config/database.yml create config/routes.rb ... create public/images/rails.png create public/javascripts/prototype.js create public/javascripts/effects.js create public/javascripts/dragdrop.js create public/javascripts/controls.js create public/javascripts/application.js create doc/README_FOR_APP create log/server.log create log/production.log create log/development.log create log/test.logMacBook-Pro:~ kamal$
MacBook-Pro:~ kamal$ gem install rfacebook
MacBook-Pro:~ kamal$ gem install rfacebookSuccessfully installed rfacebook-0.9.81 gem installedInstalling ri documentation for rfacebook-0.9.8...Installing RDoc documentation for rfacebook-0.9.8...MacBook-Pro:~ kamal$
MacBook-Pro:~ kamal$ gem install rfacebookSuccessfully installed rfacebook-0.9.81 gem installedInstalling ri documentation for rfacebook-0.9.8...Installing RDoc documentation for rfacebook-0.9.8...MacBook-Pro:~ kamal$ cd super_gifts/
MacBook-Pro:~ kamal$ gem install rfacebookSuccessfully installed rfacebook-0.9.81 gem installedInstalling ri documentation for rfacebook-0.9.8...Installing RDoc documentation for rfacebook-0.9.8...MacBook-Pro:~ kamal$ cd super_gifts/MacBook-Pro:super_gifts kamal$
MacBook-Pro:~ kamal$ gem install rfacebookSuccessfully installed rfacebook-0.9.81 gem installedInstalling ri documentation for rfacebook-0.9.8...Installing RDoc documentation for rfacebook-0.9.8...MacBook-Pro:~ kamal$ cd super_gifts/MacBook-Pro:super_gifts kamal$ ./script/plugin install \
MacBook-Pro:~ kamal$ gem install rfacebookSuccessfully installed rfacebook-0.9.81 gem installedInstalling ri documentation for rfacebook-0.9.8...Installing RDoc documentation for rfacebook-0.9.8...MacBook-Pro:~ kamal$ cd super_gifts/MacBook-Pro:super_gifts kamal$ ./script/plugin install \http://rfacebook.rubyforge.org/svn/trunk/rfacebook/
MacBook-Pro:~ kamal$ gem install rfacebookSuccessfully installed rfacebook-0.9.81 gem installedInstalling ri documentation for rfacebook-0.9.8...Installing RDoc documentation for rfacebook-0.9.8...MacBook-Pro:~ kamal$ cd super_gifts/MacBook-Pro:super_gifts kamal$ ./script/plugin install \http://rfacebook.rubyforge.org/svn/trunk/rfacebook/+ ./README+ ./Rakefile+ ./lib/facebook_desktop_session.rb+ ./lib/facebook_session.rb+ ./lib/facebook_web_session.rb...+ ./test/facebook_web_session_test.rb+ ./test/test_helper.rbMacBook-Pro:super_gifts kamal$
MacBook-Pro:super_gifts kamal$ rake facebook:setup
MacBook-Pro:super_gifts kamal$ rake facebook:setup(in /Users/kamal/super_gifts)======================================================Setting up RFacebook on Rails Plugin [1] Created config/facebook.yml <-- BE SURE TO CHANGE THE API KEY AND SECRETDone.======================================================MacBook-Pro:super_gifts kamal$
development: key: YOUR_API_KEY_HERE secret: YOUR_API_SECRET_HERE canvas_path: /yourAppName/ callback_path: /path/to/your/callback/ tunnel: username: yourLoginName host: www.yourexternaldomain.com port: 1234 local_port: 5678
config/facebook.yml
development: key: c6578c8b63873881caad22fccfe2715b secret: 6b3f1f580409cd487f431e22923f00ad canvas_path: /super_gifts/ callback_path: / tunnel: username: kamal host: deploy.ror.com.my port: 8080 local_port: 3000
config/facebook.yml
MacBook-Pro:super_gifts kamal$ rake facebook:tunnel:start
MacBook-Pro:super_gifts kamal$ rake facebook:tunnel:start(in /Users/kamal/super_gifts)======================================================Tunneling deploy.ror.com.my:8080 to 0.0.0.0:3000
NOTES:* ensure that you have Rails running on your local machine at port 3000* once logged in to the tunnel, you can visit http://deploy.ror.com.my:8080 to view your site* use ctrl-c to quit the tunnel* if you have problems creating the tunnel, you may need to add the following to /etc/ssh/sshd_config on your server:
GatewayPorts clientspecified
* if you have problems with deploy.ror.com.my timing out your ssh connection, add the following lines to your '~/.ssh/config' file:
Host deploy.ror.com.my ServerAliveInterval 120
======================================================
MacBook-Pro:super_gifts kamal$ ./script/server => Booting WEBrick...=> Rails application started on http://0.0.0.0:3000=> Ctrl-C to shutdown server; call with --help for options[2008-03-14 16:38:07] INFO WEBrick 1.3.1[2008-03-14 16:38:07] INFO ruby 1.8.6 (2007-09-23) [i686-darwin9.0.0][2008-03-14 16:38:07] INFO WEBrick::HTTPServer#start: pid=68088 port=3000
What happens when you access an app?
http://apps.facebook.com/super_gifts
MacBook-Pro:super_gifts kamal$ ./script/server => Booting WEBrick...=> Rails application started on http://0.0.0.0:3000=> Ctrl-C to shutdown server; call with --help for options[2008-03-14 16:38:07] INFO WEBrick 1.3.1[2008-03-14 16:38:07] INFO ruby 1.8.6 (2007-09-23) [i686-darwin9.0.0][2008-03-14 16:38:07] INFO WEBrick::HTTPServer#start: pid=68088 port=3000
MacBook-Pro:super_gifts kamal$ ./script/server => Booting WEBrick...=> Rails application started on http://0.0.0.0:3000=> Ctrl-C to shutdown server; call with --help for options[2008-03-14 16:38:07] INFO WEBrick 1.3.1[2008-03-14 16:38:07] INFO ruby 1.8.6 (2007-09-23) [i686-darwin9.0.0][2008-03-14 16:38:07] INFO WEBrick::HTTPServer#start: pid=68088 port=3000
Making things look right
FBML
<fb:name uid="508258787" /> => you
<fb:name uid="508258787" /> => you<fb:name uid="508258787" capitalize="true" /> => You
<fb:name uid="508258787" /> => you<fb:name uid="508258787" capitalize="true" /> => You<fb:name uid="508258787" possessive="true" /> => Your
<fb:name uid="508258787" /> => you<fb:name uid="508258787" capitalize="true" /> => You<fb:name uid="508258787" possessive="true" /> => Your<fb:name uid="508258787" reflexive="true" /> => Yourself
<fb:name uid="508258787" /> => you<fb:name uid="508258787" capitalize="true" /> => You<fb:name uid="508258787" possessive="true" /> => Your<fb:name uid="508258787" reflexive="true" /> => Yourself<fb:name uid="508258787" useyou="false" /> => Kamal Fariz Mahyuddin
<fb:name uid="508258787" /> => you<fb:name uid="508258787" capitalize="true" /> => You<fb:name uid="508258787" possessive="true" /> => Your<fb:name uid="508258787" reflexive="true" /> => Yourself<fb:name uid="508258787" useyou="false" /> => Kamal Fariz Mahyuddin <fb:name uid="510442171" /> => Daniel CerVentus
<fb:name uid="508258787" /> => you<fb:name uid="508258787" capitalize="true" /> => You<fb:name uid="508258787" possessive="true" /> => Your<fb:name uid="508258787" reflexive="true" /> => Yourself<fb:name uid="508258787" useyou="false" /> => Kamal Fariz Mahyuddin <fb:name uid="510442171" /> => Daniel CerVentus<fb:name uid="510442171" firstnameonly="true" /> => Daniel
<fb:user-table cols="3"> <fb:user-item uid="508258787" /> <fb:user-item uid="510442171" /> <fb:user-item uid="780410586" /> <fb:user-item uid="544248752" /> <fb:user-item uid="543101914" /></fb:user-table>
<fb:comments xid="super_gift_comments" canpost="true" returnurl="http://apps.facebook.com/super_gifts"> <fb:title>The Wall</fb:title></fb:comments>
FBML Test Consolehttp://developers.facebook.com/tools.php?fbml
Making things act right
API
fbsession.friends_get
<?xml version="1.0" encoding="UTF-8"?><friends_get_response ... list="true"> <uid>400156</uid> <uid>1906543</uid> <uid>5404778</uid> <uid>8602139</uid> ... <uid>5404778</uid> <uid>8602139</uid></friends_get_response>
fbsession.notifications_send(:to_ids => ['400156', '1906543'], :notification => message)
API Test Consolehttp://developers.facebook.com/tools.php?api
STEP 3
PROFIT!!!111!!!1!!
Resources
Hosting - Joyent Accelerator for Facebook Developershttp://www.joyent.com/developers/facebook/
Facebook Developers Wikihttp://wiki.developers.facebook.com/
FBML Test Consolehttp://developers.facebook.com/tools.php?fbml
API Test Consolehttp://developers.facebook.com/tools.php?api
Ruby on Railshttp://www.rubyonrails.org/
rfacebookhttp://rfacebook.rubyforge.org/
facebookerhttp://facebooker.rubyforge.org/
Malaysia.rbMalaysia Ruby Brigade
106 people in Google Groups53 people in Facebook Group
Meets every third Thursday of the month
Malaysia.rb 3rd MeetupJuly 2007
http://groups.google.com/group/malaysia-rb