Download - Facebook mit Rails und Facebooker
![Page 1: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/1.jpg)
Rails vs. FacebookerFacebook-Apps mit Facebooker
Jan Krutisch <[email protected]>
10. Juni 2009Rails Usergroup Hamburg
Donnerstag, 11. Juni 2009
![Page 2: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/2.jpg)
Facebook you say?
Donnerstag, 11. Juni 2009
![Page 3: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/3.jpg)
200 Gazillionen Benutzer
Donnerstag, 11. Juni 2009
![Page 4: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/4.jpg)
(pro Tag)
Donnerstag, 11. Juni 2009
![Page 5: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/5.jpg)
(ungefähr)
Donnerstag, 11. Juni 2009
![Page 6: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/6.jpg)
verdammt viele
Donnerstag, 11. Juni 2009
![Page 7: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/7.jpg)
potentielle Kunden
Donnerstag, 11. Juni 2009
![Page 8: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/8.jpg)
für was?
Donnerstag, 11. Juni 2009
![Page 9: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/9.jpg)
for great justice
Donnerstag, 11. Juni 2009
![Page 10: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/10.jpg)
Step 3: Profit
Donnerstag, 11. Juni 2009
![Page 11: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/11.jpg)
Virales Wachstum und so...
Donnerstag, 11. Juni 2009
![Page 12: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/12.jpg)
Donnerstag, 11. Juni 2009
![Page 13: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/13.jpg)
Glaubt mir!
Donnerstag, 11. Juni 2009
![Page 14: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/14.jpg)
anyway
Donnerstag, 11. Juni 2009
![Page 15: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/15.jpg)
facebook application?
Donnerstag, 11. Juni 2009
![Page 16: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/16.jpg)
Integrationspunkte
Donnerstag, 11. Juni 2009
![Page 17: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/17.jpg)
Canvas
Donnerstag, 11. Juni 2009
![Page 18: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/18.jpg)
Donnerstag, 11. Juni 2009
![Page 19: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/19.jpg)
Donnerstag, 11. Juni 2009
![Page 20: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/20.jpg)
•App in App (Proxy bzw. iFrame)
•HTML plus FBML
•Zusätzliche Parameter, Header etc.
Donnerstag, 11. Juni 2009
![Page 21: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/21.jpg)
FBML ZOMG WTF?
Donnerstag, 11. Juni 2009
![Page 22: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/22.jpg)
Face Book Markup Language
Donnerstag, 11. Juni 2009
![Page 23: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/23.jpg)
<fb:fbml> <fb:header>dings</fb:header> <%- fb_tabs do -%> <%= yield :tabs %> <%- end -%> <fb:add-section-button section="profile" /> <%= yield %></fb:fbml>
Donnerstag, 11. Juni 2009
![Page 24: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/24.jpg)
loads of tags
Donnerstag, 11. Juni 2009
![Page 25: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/25.jpg)
Texthttp://wiki.developers.facebook.com/index.php
/FBML
Donnerstag, 11. Juni 2009
![Page 26: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/26.jpg)
•Daten-Integration
•Cache-Hilfen
•Forms
•Styling
•Visibility
Donnerstag, 11. Juni 2009
![Page 27: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/27.jpg)
API
Donnerstag, 11. Juni 2009
![Page 28: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/28.jpg)
(out of scope)
Donnerstag, 11. Juni 2009
![Page 29: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/29.jpg)
Profil-Widgets pushen
Donnerstag, 11. Juni 2009
![Page 30: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/30.jpg)
Donnerstag, 11. Juni 2009
![Page 31: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/31.jpg)
(Auch FBML)
Donnerstag, 11. Juni 2009
![Page 32: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/32.jpg)
Notifications
Donnerstag, 11. Juni 2009
![Page 33: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/33.jpg)
Donnerstag, 11. Juni 2009
![Page 34: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/34.jpg)
Publisher
Donnerstag, 11. Juni 2009
![Page 35: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/35.jpg)
Donnerstag, 11. Juni 2009
![Page 36: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/36.jpg)
Facebook Connect
Donnerstag, 11. Juni 2009
![Page 37: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/37.jpg)
(Think OAuth)
Donnerstag, 11. Juni 2009
![Page 38: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/38.jpg)
Weitere Technologien
Donnerstag, 11. Juni 2009
![Page 39: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/39.jpg)
FBJS
Donnerstag, 11. Juni 2009
![Page 40: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/40.jpg)
Face Book Just Sucks
Donnerstag, 11. Juni 2009
![Page 41: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/41.jpg)
Donnerstag, 11. Juni 2009
![Page 42: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/42.jpg)
<%= image_tag image.small_url, :id => "gallery_image_#{image.id}", :class => "gallery-image", :onclick => "setImage(#{image.id});return false;" %>
Donnerstag, 11. Juni 2009
![Page 43: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/43.jpg)
<img alt="101_21480322_original" class="gallery-image" id="app208488715334_gallery_image_29" onclick="fbjs_sandbox.instances.a208488715334.bootstrap();return fbjs_dom.eventHandler.call([fbjs_dom.get_instance(this,208488715334),function(a208488715334_event) {a208488715334_setImage(29);return false;},208488715334],new fbjs_event(event));return true;" src="http://s3.amazonaws.com/com.dpa-info.widget.staging/101_21480322_original.small-1-1-200-126-0-582-456.jpg" fbcontext="fa3facfe268f">
Donnerstag, 11. Juni 2009
![Page 44: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/44.jpg)
Aber wie?
Donnerstag, 11. Juni 2009
![Page 45: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/45.jpg)
Facebooker
Donnerstag, 11. Juni 2009
![Page 46: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/46.jpg)
Chad Fowler
Donnerstag, 11. Juni 2009
![Page 47: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/47.jpg)
Mike Mangino
Donnerstag, 11. Juni 2009
![Page 48: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/48.jpg)
Donnerstag, 11. Juni 2009
![Page 49: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/49.jpg)
•Sehr coole API-Umsetzung
•before_filter f. Auth etc.
•Fast alle APIs abgedeckt
•Publisher (wie Mailer) f. Notifications, Profile, Profile-Publisher
•FBML-Helper
Donnerstag, 11. Juni 2009
![Page 50: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/50.jpg)
Configure
Donnerstag, 11. Juni 2009
![Page 51: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/51.jpg)
Donnerstag, 11. Juni 2009
![Page 52: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/52.jpg)
Donnerstag, 11. Juni 2009
![Page 53: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/53.jpg)
development: api_key: --------------------------------- secret_key: ---------------------------------- canvas_page_name: example callback_url: http://example:4007 pretty_errors: true set_asset_host_to_callback_url: true tunnel: public_host_username: johndoe public_host: example.com public_port: 4007 local_port: 3000 server_alive_interval: 0
test: api_key: --------------------------------- secret_key: ---------------------------------- canvas_page_name: example callback_url: http://example:4007 pretty_errors: true set_asset_host_to_callback_url: true tunnel: public_host_username: johndoe public_host: example.com public_port: 4007 local_port: 3000 server_alive_interval: 0
Donnerstag, 11. Juni 2009
![Page 54: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/54.jpg)
rake facebooker:tunnel:start
Donnerstag, 11. Juni 2009
![Page 56: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/56.jpg)
#/etc/ssh/sshd_config
GatewayPorts clientspecified
Donnerstag, 11. Juni 2009
![Page 57: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/57.jpg)
$ /script/server
Donnerstag, 11. Juni 2009
![Page 58: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/58.jpg)
example.com
client browser
dev machine
Donnerstag, 11. Juni 2009
![Page 59: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/59.jpg)
CodePorn.random
Donnerstag, 11. Juni 2009
![Page 60: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/60.jpg)
ApplicatioController
Donnerstag, 11. Juni 2009
![Page 61: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/61.jpg)
# Filters added to this controller apply to all controllers in the application.# Likewise, all the methods added will be available for all controllers.
class ApplicationController < ActionController::Base
include ExceptionNotifiable
helper :all # include all helpers, all the time protect_from_forgery # See ActionController::RequestForgeryProtection for d...
helper_attr :current_user
attr_accessor :current_user
ensure_authenticated_to_facebook
before_filter :create_facebook_session, :set_current_user
# Scrub sensitive parameters from your log # filter_parameter_logging :password def set_current_user self.current_user = User.for(facebook_session.user.to_i, facebook_session) end end
Donnerstag, 11. Juni 2009
![Page 62: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/62.jpg)
<fb:fbml> <style type="text/css" media="screen"> ul.image-list li h2 { margin-bottom: 5px; } .single-image { width:760px; text-align:center; margin-top:10px; } .single-image h2 { margin-bottom: 5px; } </style> <fb:header>dpa-info.com galerie</fb:header> <%- fb_tabs do -%> <%= yield :tabs %> <%- end -%> <fb:add-section-button section="profile" /> <%= yield %>
</fb:fbml>
Donnerstag, 11. Juni 2009
![Page 63: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/63.jpg)
application.fbml.erb
Donnerstag, 11. Juni 2009
![Page 64: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/64.jpg)
<%- content_for :tabs do -%> <%= fb_tab_item 'Gallery', root_url, :selected => true %> <%= fb_tab_item 'Invite your friends', new_invitation_url %><%- end -%>
Donnerstag, 11. Juni 2009
![Page 65: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/65.jpg)
Profile Template
Donnerstag, 11. Juni 2009
![Page 66: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/66.jpg)
<%- @assigns[:images].each do |image| -%> <%= link_to image_tag(image.small_url,
:title => h(image.title), :alt => h(image.title)), root_url %>
<%- end -%><%= link_to "Mehr Bilder...", gallery_url %>
Donnerstag, 11. Juni 2009
![Page 67: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/67.jpg)
Publisher
Donnerstag, 11. Juni 2009
![Page 68: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/68.jpg)
class GalleryPublisher < Facebooker::Rails::Publisher def image_feed_template app_link = link_to("Mehr Photos...",root_url) one_line_story_template "{*actor*} mag das Photo '{*image_title*}' #{app_link}" short_story_template "{*actor*} mag das Photo '{*image_title*}' aus der dpa-Galerie", "#{app_link}" end def image_feed(user, image) send_as :user_action from user data :image_title => image.title, :images=>[image(image.small_url,root_url)] end def profile_update(user) send_as :profile recipients user @images = DailyImage.latest.all(:limit => 10) profile render(:partial => "profile", :assigns => {:images => @images} ) profile_main render(:partial => "profile_narrow", :assigns => {:images => @images[0..3]} ) endend
Donnerstag, 11. Juni 2009
![Page 69: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/69.jpg)
ProfilePublisher
Donnerstag, 11. Juni 2009
![Page 70: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/70.jpg)
class ProfilePublisherController < ApplicationController skip_before_filter :ensure_authenticated_to_facebook def index
if current_user.nil? and facebook_params[:user] self.current_user = User.for(facebook_params[:user]) end if wants_interface? @images = DailyImage.latest.all(:limit => 10) render_publisher_interface(render_to_string(:partial=>"form", :assigns => {:images => @images})) else @image = DailyImage.find(params[:app_params][:id]) render_publisher_response(GalleryPublisher.create_image_feed(current_user, @image)) end endend
Donnerstag, 11. Juni 2009
![Page 71: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/71.jpg)
some more code...
Donnerstag, 11. Juni 2009
![Page 72: Facebook mit Rails und Facebooker](https://reader034.vdocuments.pub/reader034/viewer/2022051323/547e974a5806b5c25e8b46d1/html5/thumbnails/72.jpg)
fin
Donnerstag, 11. Juni 2009