Facebook mit Rails und Facebooker

72
Rails vs. Facebooker Facebook-Apps mit Facebooker Jan Krutisch <[email protected] > 10. Juni 2009 Rails Usergroup Hamburg Donnerstag, 11. Juni 2009

description

a rather rough version of a presentation on facebook and how to write fb-apps in rails.

Transcript of Facebook mit Rails und Facebooker

Page 1: Facebook mit Rails und Facebooker

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

Facebook you say?

Donnerstag, 11. Juni 2009

Page 3: Facebook mit Rails und Facebooker

200 Gazillionen Benutzer

Donnerstag, 11. Juni 2009

Page 4: Facebook mit Rails und Facebooker

(pro Tag)

Donnerstag, 11. Juni 2009

Page 5: Facebook mit Rails und Facebooker

(ungefähr)

Donnerstag, 11. Juni 2009

Page 6: Facebook mit Rails und Facebooker

verdammt viele

Donnerstag, 11. Juni 2009

Page 7: Facebook mit Rails und Facebooker

potentielle Kunden

Donnerstag, 11. Juni 2009

Page 8: Facebook mit Rails und Facebooker

für was?

Donnerstag, 11. Juni 2009

Page 9: Facebook mit Rails und Facebooker

for great justice

Donnerstag, 11. Juni 2009

Page 10: Facebook mit Rails und Facebooker

Step 3: Profit

Donnerstag, 11. Juni 2009

Page 11: Facebook mit Rails und Facebooker

Virales Wachstum und so...

Donnerstag, 11. Juni 2009

Page 12: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 13: Facebook mit Rails und Facebooker

Glaubt mir!

Donnerstag, 11. Juni 2009

Page 14: Facebook mit Rails und Facebooker

anyway

Donnerstag, 11. Juni 2009

Page 15: Facebook mit Rails und Facebooker

facebook application?

Donnerstag, 11. Juni 2009

Page 16: Facebook mit Rails und Facebooker

Integrationspunkte

Donnerstag, 11. Juni 2009

Page 17: Facebook mit Rails und Facebooker

Canvas

Donnerstag, 11. Juni 2009

Page 18: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 19: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 20: Facebook mit Rails und Facebooker

•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

FBML ZOMG WTF?

Donnerstag, 11. Juni 2009

Page 22: Facebook mit Rails und Facebooker

Face Book Markup Language

Donnerstag, 11. Juni 2009

Page 23: Facebook mit Rails und Facebooker

<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

loads of tags

Donnerstag, 11. Juni 2009

Page 25: Facebook mit Rails und Facebooker

Texthttp://wiki.developers.facebook.com/index.php

/FBML

Donnerstag, 11. Juni 2009

Page 26: Facebook mit Rails und Facebooker

•Daten-Integration

•Cache-Hilfen

•Forms

•Styling

•Visibility

Donnerstag, 11. Juni 2009

Page 27: Facebook mit Rails und Facebooker

API

Donnerstag, 11. Juni 2009

Page 28: Facebook mit Rails und Facebooker

(out of scope)

Donnerstag, 11. Juni 2009

Page 29: Facebook mit Rails und Facebooker

Profil-Widgets pushen

Donnerstag, 11. Juni 2009

Page 30: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 31: Facebook mit Rails und Facebooker

(Auch FBML)

Donnerstag, 11. Juni 2009

Page 32: Facebook mit Rails und Facebooker

Notifications

Donnerstag, 11. Juni 2009

Page 33: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 34: Facebook mit Rails und Facebooker

Publisher

Donnerstag, 11. Juni 2009

Page 35: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 36: Facebook mit Rails und Facebooker

Facebook Connect

Donnerstag, 11. Juni 2009

Page 37: Facebook mit Rails und Facebooker

(Think OAuth)

Donnerstag, 11. Juni 2009

Page 38: Facebook mit Rails und Facebooker

Weitere Technologien

Donnerstag, 11. Juni 2009

Page 39: Facebook mit Rails und Facebooker

FBJS

Donnerstag, 11. Juni 2009

Page 40: Facebook mit Rails und Facebooker

Face Book Just Sucks

Donnerstag, 11. Juni 2009

Page 41: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 42: Facebook mit Rails und Facebooker

<%= image_tag image.small_url, :id => "gallery_image_#{image.id}", :class => "gallery-image", :onclick => "setImage(#{image.id});return false;" %>

Donnerstag, 11. Juni 2009

Page 44: Facebook mit Rails und Facebooker

Aber wie?

Donnerstag, 11. Juni 2009

Page 45: Facebook mit Rails und Facebooker

Facebooker

Donnerstag, 11. Juni 2009

Page 46: Facebook mit Rails und Facebooker

Chad Fowler

Donnerstag, 11. Juni 2009

Page 47: Facebook mit Rails und Facebooker

Mike Mangino

Donnerstag, 11. Juni 2009

Page 48: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 49: Facebook mit Rails und Facebooker

•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

Configure

Donnerstag, 11. Juni 2009

Page 51: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 52: Facebook mit Rails und Facebooker

Donnerstag, 11. Juni 2009

Page 53: Facebook mit Rails und Facebooker

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

rake facebooker:tunnel:start

Donnerstag, 11. Juni 2009

Page 55: Facebook mit Rails und Facebooker

ssh -R :4007:localhost:3000 [email protected] sleep 999999

Donnerstag, 11. Juni 2009

Page 56: Facebook mit Rails und Facebooker

#/etc/ssh/sshd_config

GatewayPorts clientspecified

Donnerstag, 11. Juni 2009

Page 57: Facebook mit Rails und Facebooker

$ /script/server

Donnerstag, 11. Juni 2009

Page 58: Facebook mit Rails und Facebooker

example.com

facebook

client browser

dev machine

Donnerstag, 11. Juni 2009

Page 59: Facebook mit Rails und Facebooker

CodePorn.random

Donnerstag, 11. Juni 2009

Page 60: Facebook mit Rails und Facebooker

ApplicatioController

Donnerstag, 11. Juni 2009

Page 61: Facebook mit Rails und Facebooker

# 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

<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

application.fbml.erb

Donnerstag, 11. Juni 2009

Page 64: Facebook mit Rails und Facebooker

<%- 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

Profile Template

Donnerstag, 11. Juni 2009

Page 66: Facebook mit Rails und Facebooker

<%- @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

Publisher

Donnerstag, 11. Juni 2009

Page 68: Facebook mit Rails und Facebooker

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

ProfilePublisher

Donnerstag, 11. Juni 2009

Page 70: Facebook mit Rails und Facebooker

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

some more code...

Donnerstag, 11. Juni 2009

Page 72: Facebook mit Rails und Facebooker

fin

Donnerstag, 11. Juni 2009