SlideShare a Scribd company logo
1 of 74
Download to read offline
So you want to build
a Facebook app
Facebook 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
             A bunch of stuff that
            makes web developers
                    happy!
pattern.

       - 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.log
MacBook-Pro:~   kamal$
MacBook-Pro:~ kamal$ gem install rfacebook
MacBook-Pro:~ kamal$ gem install rfacebook
Successfully installed rfacebook-0.9.8
1 gem installed
Installing ri documentation for rfacebook-0.9.8...
Installing RDoc documentation for rfacebook-0.9.8...
MacBook-Pro:~ kamal$
MacBook-Pro:~ kamal$ gem install rfacebook
Successfully installed rfacebook-0.9.8
1 gem installed
Installing 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 rfacebook
Successfully installed rfacebook-0.9.8
1 gem installed
Installing 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 rfacebook
Successfully installed rfacebook-0.9.8
1 gem installed
Installing 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 rfacebook
Successfully installed rfacebook-0.9.8
1 gem installed
Installing 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 rfacebook
Successfully installed rfacebook-0.9.8
1 gem installed
Installing 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.rb
MacBook-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 SECRET
Done.
======================================================
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=quot;508258787quot; />   => you
<fb:name uid=quot;508258787quot; />                     => you
<fb:name uid=quot;508258787quot; capitalize=quot;truequot; />   => You
<fb:name uid=quot;508258787quot; />                     => you
<fb:name uid=quot;508258787quot; capitalize=quot;truequot; />   => You
<fb:name uid=quot;508258787quot; possessive=quot;truequot; />   => Your
<fb:name   uid=quot;508258787quot;   />                     =>   you
<fb:name   uid=quot;508258787quot;   capitalize=quot;truequot; />   =>   You
<fb:name   uid=quot;508258787quot;   possessive=quot;truequot; />   =>   Your
<fb:name   uid=quot;508258787quot;   reflexive=quot;truequot; />    =>   Yourself
<fb:name   uid=quot;508258787quot;   />                     =>   you
<fb:name   uid=quot;508258787quot;   capitalize=quot;truequot; />   =>   You
<fb:name   uid=quot;508258787quot;   possessive=quot;truequot; />   =>   Your
<fb:name   uid=quot;508258787quot;   reflexive=quot;truequot; />    =>   Yourself
<fb:name   uid=quot;508258787quot;   useyou=quot;falsequot; />      =>   Kamal Fariz Mahyuddin
<fb:name   uid=quot;508258787quot;   />                     =>   you
<fb:name   uid=quot;508258787quot;   capitalize=quot;truequot; />   =>   You
<fb:name   uid=quot;508258787quot;   possessive=quot;truequot; />   =>   Your
<fb:name   uid=quot;508258787quot;   reflexive=quot;truequot; />    =>   Yourself
<fb:name   uid=quot;508258787quot;   useyou=quot;falsequot; />      =>   Kamal Fariz Mahyuddin
<fb:name   uid=quot;510442171quot;   />                     =>   Daniel CerVentus
<fb:name   uid=quot;508258787quot;   />                        =>   you
<fb:name   uid=quot;508258787quot;   capitalize=quot;truequot; />      =>   You
<fb:name   uid=quot;508258787quot;   possessive=quot;truequot; />      =>   Your
<fb:name   uid=quot;508258787quot;   reflexive=quot;truequot; />       =>   Yourself
<fb:name   uid=quot;508258787quot;   useyou=quot;falsequot; />         =>   Kamal Fariz Mahyuddin
<fb:name   uid=quot;510442171quot;   />                        =>   Daniel CerVentus
<fb:name   uid=quot;510442171quot;   firstnameonly=quot;truequot; />   =>   Daniel
<fb:user-table cols=quot;3quot;>
   <fb:user-item uid=quot;508258787quot;   />
   <fb:user-item uid=quot;510442171quot;   />
   <fb:user-item uid=quot;780410586quot;   />
   <fb:user-item uid=quot;544248752quot;   />
   <fb:user-item uid=quot;543101914quot;   />
</fb:user-table>
<fb:comments xid=quot;super_gift_commentsquot; canpost=quot;truequot; returnurl=quot;http://apps.facebook.com/super_giftsquot;>
  <fb:title>The Wall</fb:title>
</fb:comments>
FBML Test Console
http://developers.facebook.com/tools.php?fbml
Making things act right
API
fbsession.friends_get


<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<friends_get_response ... list=quot;truequot;>
  <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 Console
http://developers.facebook.com/tools.php?api
STEP 3

PROFIT!!!111!!!1!!
Resources
Hosting - Joyent Accelerator for Facebook Developers
http://www.joyent.com/developers/facebook/

Facebook Developers Wiki
http://wiki.developers.facebook.com/

FBML Test Console
http://developers.facebook.com/tools.php?fbml

API Test Console
http://developers.facebook.com/tools.php?api

Ruby on Rails
http://www.rubyonrails.org/

rfacebook
http://rfacebook.rubyforge.org/

facebooker
http://facebooker.rubyforge.org/
Malaysia.rb
Malaysia Ruby Brigade
106 people in Google Groups
53 people in Facebook Group
Meets every third Thursday
of the month
Malaysia.rb 3rd Meetup
July 2007
http://groups.google.com/group/malaysia-rb

More Related Content

What's hot

Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2Byrne Reese
 
Drawing the Line with Browser Compatibility
Drawing the Line with Browser CompatibilityDrawing the Line with Browser Compatibility
Drawing the Line with Browser Compatibilityjsmith92
 
Dress Your WordPress with Child Themes
Dress Your WordPress with Child ThemesDress Your WordPress with Child Themes
Dress Your WordPress with Child ThemesLaurie M. Rauch
 
LESS is More
LESS is MoreLESS is More
LESS is Morejsmith92
 
Doing more with LESS
Doing more with LESSDoing more with LESS
Doing more with LESSjsmith92
 
Beautiful Java EE - PrettyFaces
Beautiful Java EE - PrettyFacesBeautiful Java EE - PrettyFaces
Beautiful Java EE - PrettyFacesLincoln III
 
Html5的应用与推行
Html5的应用与推行Html5的应用与推行
Html5的应用与推行Sofish Lin
 
How to Issue and Activate Free SSL using Let's Encrypt
How to Issue and Activate Free SSL using Let's EncryptHow to Issue and Activate Free SSL using Let's Encrypt
How to Issue and Activate Free SSL using Let's EncryptMayeenul Islam
 
Installing And Configuration for your Wordpress blog
Installing And Configuration for your Wordpress blogInstalling And Configuration for your Wordpress blog
Installing And Configuration for your Wordpress blogigorgentry
 
PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (...
PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (...PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (...
PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (...Lincoln III
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワークTakatsugu Shigeta
 
Contributing to WordPress Core - Peter Wilson
Contributing to WordPress Core - Peter WilsonContributing to WordPress Core - Peter Wilson
Contributing to WordPress Core - Peter WilsonWordCamp Sydney
 
Mobile Web Performance - Getting and Staying Fast
Mobile Web Performance -  Getting and Staying FastMobile Web Performance -  Getting and Staying Fast
Mobile Web Performance - Getting and Staying FastAndy Davies
 
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?Andy Davies
 
Nahlédněte za oponu VersionPressu
Nahlédněte za oponu VersionPressuNahlédněte za oponu VersionPressu
Nahlédněte za oponu VersionPressuJan Voracek
 
Html5 and beyond the next generation of mobile web applications - Touch Tou...
Html5 and beyond   the next generation of mobile web applications - Touch Tou...Html5 and beyond   the next generation of mobile web applications - Touch Tou...
Html5 and beyond the next generation of mobile web applications - Touch Tou...RIA RUI Society
 
2012.sandiego.wordcamp
2012.sandiego.wordcamp2012.sandiego.wordcamp
2012.sandiego.wordcampBrandon Dove
 
جيفيرا باي الساحل الشمالي
جيفيرا باي الساحل الشماليجيفيرا باي الساحل الشمالي
جيفيرا باي الساحل الشماليReda Hassan
 

What's hot (20)

Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2
 
Drawing the Line with Browser Compatibility
Drawing the Line with Browser CompatibilityDrawing the Line with Browser Compatibility
Drawing the Line with Browser Compatibility
 
Taking your Web App for a walk
Taking your Web App for a walkTaking your Web App for a walk
Taking your Web App for a walk
 
Dress Your WordPress with Child Themes
Dress Your WordPress with Child ThemesDress Your WordPress with Child Themes
Dress Your WordPress with Child Themes
 
LESS is More
LESS is MoreLESS is More
LESS is More
 
Doing more with LESS
Doing more with LESSDoing more with LESS
Doing more with LESS
 
Beautiful Java EE - PrettyFaces
Beautiful Java EE - PrettyFacesBeautiful Java EE - PrettyFaces
Beautiful Java EE - PrettyFaces
 
Html5的应用与推行
Html5的应用与推行Html5的应用与推行
Html5的应用与推行
 
How to Issue and Activate Free SSL using Let's Encrypt
How to Issue and Activate Free SSL using Let's EncryptHow to Issue and Activate Free SSL using Let's Encrypt
How to Issue and Activate Free SSL using Let's Encrypt
 
Installing And Configuration for your Wordpress blog
Installing And Configuration for your Wordpress blogInstalling And Configuration for your Wordpress blog
Installing And Configuration for your Wordpress blog
 
PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (...
PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (...PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (...
PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (...
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワーク
 
Contributing to WordPress Core - Peter Wilson
Contributing to WordPress Core - Peter WilsonContributing to WordPress Core - Peter Wilson
Contributing to WordPress Core - Peter Wilson
 
Mobile Web Performance - Getting and Staying Fast
Mobile Web Performance -  Getting and Staying FastMobile Web Performance -  Getting and Staying Fast
Mobile Web Performance - Getting and Staying Fast
 
High-Quality JavaScript
High-Quality JavaScriptHigh-Quality JavaScript
High-Quality JavaScript
 
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
Are Today’s Good Practices… Tomorrow’s Performance Anti-Patterns?
 
Nahlédněte za oponu VersionPressu
Nahlédněte za oponu VersionPressuNahlédněte za oponu VersionPressu
Nahlédněte za oponu VersionPressu
 
Html5 and beyond the next generation of mobile web applications - Touch Tou...
Html5 and beyond   the next generation of mobile web applications - Touch Tou...Html5 and beyond   the next generation of mobile web applications - Touch Tou...
Html5 and beyond the next generation of mobile web applications - Touch Tou...
 
2012.sandiego.wordcamp
2012.sandiego.wordcamp2012.sandiego.wordcamp
2012.sandiego.wordcamp
 
جيفيرا باي الساحل الشمالي
جيفيرا باي الساحل الشماليجيفيرا باي الساحل الشمالي
جيفيرا باي الساحل الشمالي
 

Similar to So you want to build a Facebook app

So you want to build a facebook App ?
So you want to build a facebook App ?So you want to build a facebook App ?
So you want to build a facebook App ?Nguyễn Duy Nhân
 
Your own (little) gem: building an online business with Ruby
Your own (little) gem: building an online business with RubyYour own (little) gem: building an online business with Ruby
Your own (little) gem: building an online business with RubyLindsay Holmwood
 
Create and Deploy Ember in 5 Minutes with Middleman
Create and Deploy Ember in 5 Minutes with MiddlemanCreate and Deploy Ember in 5 Minutes with Middleman
Create and Deploy Ember in 5 Minutes with MiddlemanRoss Kaffenberger
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Librariesjeresig
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the FinishYehuda Katz
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui frameworkHongSeong Jeon
 
Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Joao Lucas Santana
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
MySQL crash course by moshe kaplan
MySQL crash course by moshe kaplanMySQL crash course by moshe kaplan
MySQL crash course by moshe kaplanMoshe Kaplan
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
yusukebe in Yokohama.pm 090909
yusukebe in Yokohama.pm 090909yusukebe in Yokohama.pm 090909
yusukebe in Yokohama.pm 090909Yusuke Wada
 
Love The Terminal
Love The TerminalLove The Terminal
Love The TerminalMike West
 
Socket applications
Socket applicationsSocket applications
Socket applicationsJoão Moura
 
20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdevFrank Rousseau
 
Turbogears Presentation
Turbogears PresentationTurbogears Presentation
Turbogears Presentationdidip
 
August 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle TwitterAugust 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle TwitterStraight North
 
FVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / WidgetsFVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / WidgetsPete DuMelle
 
Spyware/Malware FVCP
Spyware/Malware  FVCPSpyware/Malware  FVCP
Spyware/Malware FVCPPete DuMelle
 
Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...
Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...
Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...Atlassian
 

Similar to So you want to build a Facebook app (20)

So you want to build a facebook App ?
So you want to build a facebook App ?So you want to build a facebook App ?
So you want to build a facebook App ?
 
Your own (little) gem: building an online business with Ruby
Your own (little) gem: building an online business with RubyYour own (little) gem: building an online business with Ruby
Your own (little) gem: building an online business with Ruby
 
Create and Deploy Ember in 5 Minutes with Middleman
Create and Deploy Ember in 5 Minutes with MiddlemanCreate and Deploy Ember in 5 Minutes with Middleman
Create and Deploy Ember in 5 Minutes with Middleman
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Libraries
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the Finish
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui framework
 
Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)Desenvolvimento web com Ruby on Rails (parte 2)
Desenvolvimento web com Ruby on Rails (parte 2)
 
Capistrano
CapistranoCapistrano
Capistrano
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
 
MySQL crash course by moshe kaplan
MySQL crash course by moshe kaplanMySQL crash course by moshe kaplan
MySQL crash course by moshe kaplan
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
 
yusukebe in Yokohama.pm 090909
yusukebe in Yokohama.pm 090909yusukebe in Yokohama.pm 090909
yusukebe in Yokohama.pm 090909
 
Love The Terminal
Love The TerminalLove The Terminal
Love The Terminal
 
Socket applications
Socket applicationsSocket applications
Socket applications
 
20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev
 
Turbogears Presentation
Turbogears PresentationTurbogears Presentation
Turbogears Presentation
 
August 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle TwitterAugust 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle Twitter
 
FVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / WidgetsFVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / Widgets
 
Spyware/Malware FVCP
Spyware/Malware  FVCPSpyware/Malware  FVCP
Spyware/Malware FVCP
 
Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...
Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...
Satellite Apps around the Cloud: Integrating your infrastructure with JIRA St...
 

More from kamal.fariz

Entrepreneur + Developer Gangbang: Co-working
Entrepreneur + Developer Gangbang: Co-workingEntrepreneur + Developer Gangbang: Co-working
Entrepreneur + Developer Gangbang: Co-workingkamal.fariz
 
The Malaysian Free Software Movement 2008
The Malaysian Free Software Movement 2008The Malaysian Free Software Movement 2008
The Malaysian Free Software Movement 2008kamal.fariz
 
Impact of Higher Mathematics on the World Wide Web
Impact of Higher Mathematics on the World Wide WebImpact of Higher Mathematics on the World Wide Web
Impact of Higher Mathematics on the World Wide Webkamal.fariz
 
Life of a GSoC Student
Life of a GSoC StudentLife of a GSoC Student
Life of a GSoC Studentkamal.fariz
 
Design For Developers
Design For DevelopersDesign For Developers
Design For Developerskamal.fariz
 
SearchMonkey - Monkeying Around With Search
SearchMonkey - Monkeying Around With SearchSearchMonkey - Monkeying Around With Search
SearchMonkey - Monkeying Around With Searchkamal.fariz
 
RIA Development via Adobe Flex + JRuby on Rails
RIA Development via Adobe Flex + JRuby on RailsRIA Development via Adobe Flex + JRuby on Rails
RIA Development via Adobe Flex + JRuby on Railskamal.fariz
 
Content Delivery Network
Content Delivery NetworkContent Delivery Network
Content Delivery Networkkamal.fariz
 
Web Development with Ruby on Rails, MyGOSSCON 2007
Web Development with Ruby on Rails, MyGOSSCON 2007Web Development with Ruby on Rails, MyGOSSCON 2007
Web Development with Ruby on Rails, MyGOSSCON 2007kamal.fariz
 
Acunote vs. Mingle
Acunote vs. MingleAcunote vs. Mingle
Acunote vs. Minglekamal.fariz
 

More from kamal.fariz (10)

Entrepreneur + Developer Gangbang: Co-working
Entrepreneur + Developer Gangbang: Co-workingEntrepreneur + Developer Gangbang: Co-working
Entrepreneur + Developer Gangbang: Co-working
 
The Malaysian Free Software Movement 2008
The Malaysian Free Software Movement 2008The Malaysian Free Software Movement 2008
The Malaysian Free Software Movement 2008
 
Impact of Higher Mathematics on the World Wide Web
Impact of Higher Mathematics on the World Wide WebImpact of Higher Mathematics on the World Wide Web
Impact of Higher Mathematics on the World Wide Web
 
Life of a GSoC Student
Life of a GSoC StudentLife of a GSoC Student
Life of a GSoC Student
 
Design For Developers
Design For DevelopersDesign For Developers
Design For Developers
 
SearchMonkey - Monkeying Around With Search
SearchMonkey - Monkeying Around With SearchSearchMonkey - Monkeying Around With Search
SearchMonkey - Monkeying Around With Search
 
RIA Development via Adobe Flex + JRuby on Rails
RIA Development via Adobe Flex + JRuby on RailsRIA Development via Adobe Flex + JRuby on Rails
RIA Development via Adobe Flex + JRuby on Rails
 
Content Delivery Network
Content Delivery NetworkContent Delivery Network
Content Delivery Network
 
Web Development with Ruby on Rails, MyGOSSCON 2007
Web Development with Ruby on Rails, MyGOSSCON 2007Web Development with Ruby on Rails, MyGOSSCON 2007
Web Development with Ruby on Rails, MyGOSSCON 2007
 
Acunote vs. Mingle
Acunote vs. MingleAcunote vs. Mingle
Acunote vs. Mingle
 

Recently uploaded

Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
Buy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfBuy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfEasyPrinterHelp
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
Buy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxBuy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxEasyPrinterHelp
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessUXDXConf
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfChristopherTHyatt
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 

Recently uploaded (20)

Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Buy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfBuy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdf
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Buy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxBuy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptx
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 

So you want to build a Facebook app

  • 1. So you want to build a Facebook app Facebook Developer Garage Kuala Lumpur Kamal Fariz, RSB
  • 6. STEP 1 Setup a new application
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. STEP 2 Create a Rails app
  • 19. A full-stack framework for developing database-backed web applications according to the Model-View-Controller pattern.
  • 20. A full-stack framework for developing database-backed web applications according to the Model-View-Controller A bunch of stuff that makes web developers happy! pattern. - David Heinemeier Hansson http://flickr.com/photos/pragdave/174964316/
  • 22. 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.log MacBook-Pro:~ kamal$
  • 23. MacBook-Pro:~ kamal$ gem install rfacebook
  • 24. MacBook-Pro:~ kamal$ gem install rfacebook Successfully installed rfacebook-0.9.8 1 gem installed Installing ri documentation for rfacebook-0.9.8... Installing RDoc documentation for rfacebook-0.9.8... MacBook-Pro:~ kamal$
  • 25. MacBook-Pro:~ kamal$ gem install rfacebook Successfully installed rfacebook-0.9.8 1 gem installed Installing ri documentation for rfacebook-0.9.8... Installing RDoc documentation for rfacebook-0.9.8... MacBook-Pro:~ kamal$ cd super_gifts/
  • 26. MacBook-Pro:~ kamal$ gem install rfacebook Successfully installed rfacebook-0.9.8 1 gem installed Installing 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$
  • 27. MacBook-Pro:~ kamal$ gem install rfacebook Successfully installed rfacebook-0.9.8 1 gem installed Installing 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
  • 28. MacBook-Pro:~ kamal$ gem install rfacebook Successfully installed rfacebook-0.9.8 1 gem installed Installing 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/
  • 29. MacBook-Pro:~ kamal$ gem install rfacebook Successfully installed rfacebook-0.9.8 1 gem installed Installing 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.rb MacBook-Pro:super_gifts kamal$
  • 31. 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 SECRET Done. ====================================================== MacBook-Pro:super_gifts kamal$
  • 32. 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
  • 33.
  • 34.
  • 35. 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
  • 36. MacBook-Pro:super_gifts kamal$ rake facebook:tunnel:start
  • 37. 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 ======================================================
  • 38. 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
  • 39. What happens when you access an app?
  • 41.
  • 42.
  • 43. 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
  • 44. 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
  • 45.
  • 46.
  • 47.
  • 49. FBML
  • 51. <fb:name uid=quot;508258787quot; /> => you <fb:name uid=quot;508258787quot; capitalize=quot;truequot; /> => You
  • 52. <fb:name uid=quot;508258787quot; /> => you <fb:name uid=quot;508258787quot; capitalize=quot;truequot; /> => You <fb:name uid=quot;508258787quot; possessive=quot;truequot; /> => Your
  • 53. <fb:name uid=quot;508258787quot; /> => you <fb:name uid=quot;508258787quot; capitalize=quot;truequot; /> => You <fb:name uid=quot;508258787quot; possessive=quot;truequot; /> => Your <fb:name uid=quot;508258787quot; reflexive=quot;truequot; /> => Yourself
  • 54. <fb:name uid=quot;508258787quot; /> => you <fb:name uid=quot;508258787quot; capitalize=quot;truequot; /> => You <fb:name uid=quot;508258787quot; possessive=quot;truequot; /> => Your <fb:name uid=quot;508258787quot; reflexive=quot;truequot; /> => Yourself <fb:name uid=quot;508258787quot; useyou=quot;falsequot; /> => Kamal Fariz Mahyuddin
  • 55. <fb:name uid=quot;508258787quot; /> => you <fb:name uid=quot;508258787quot; capitalize=quot;truequot; /> => You <fb:name uid=quot;508258787quot; possessive=quot;truequot; /> => Your <fb:name uid=quot;508258787quot; reflexive=quot;truequot; /> => Yourself <fb:name uid=quot;508258787quot; useyou=quot;falsequot; /> => Kamal Fariz Mahyuddin <fb:name uid=quot;510442171quot; /> => Daniel CerVentus
  • 56. <fb:name uid=quot;508258787quot; /> => you <fb:name uid=quot;508258787quot; capitalize=quot;truequot; /> => You <fb:name uid=quot;508258787quot; possessive=quot;truequot; /> => Your <fb:name uid=quot;508258787quot; reflexive=quot;truequot; /> => Yourself <fb:name uid=quot;508258787quot; useyou=quot;falsequot; /> => Kamal Fariz Mahyuddin <fb:name uid=quot;510442171quot; /> => Daniel CerVentus <fb:name uid=quot;510442171quot; firstnameonly=quot;truequot; /> => Daniel
  • 57. <fb:user-table cols=quot;3quot;> <fb:user-item uid=quot;508258787quot; /> <fb:user-item uid=quot;510442171quot; /> <fb:user-item uid=quot;780410586quot; /> <fb:user-item uid=quot;544248752quot; /> <fb:user-item uid=quot;543101914quot; /> </fb:user-table>
  • 58. <fb:comments xid=quot;super_gift_commentsquot; canpost=quot;truequot; returnurl=quot;http://apps.facebook.com/super_giftsquot;> <fb:title>The Wall</fb:title> </fb:comments>
  • 61. API
  • 62. fbsession.friends_get <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <friends_get_response ... list=quot;truequot;> <uid>400156</uid> <uid>1906543</uid> <uid>5404778</uid> <uid>8602139</uid> ... <uid>5404778</uid> <uid>8602139</uid> </friends_get_response>
  • 63. fbsession.notifications_send(:to_ids => ['400156', '1906543'], :notification => message)
  • 67. Hosting - Joyent Accelerator for Facebook Developers http://www.joyent.com/developers/facebook/ Facebook Developers Wiki http://wiki.developers.facebook.com/ FBML Test Console http://developers.facebook.com/tools.php?fbml API Test Console http://developers.facebook.com/tools.php?api Ruby on Rails http://www.rubyonrails.org/ rfacebook http://rfacebook.rubyforge.org/ facebooker http://facebooker.rubyforge.org/
  • 68.
  • 69.
  • 71. 106 people in Google Groups 53 people in Facebook Group
  • 72. Meets every third Thursday of the month