Module: Sinatra::ReFacebookRegister
- Defined in:
- lib/refacebook/sinatra.rb
Instance Method Summary collapse
-
#require_facebook(*args) ⇒ Object
ReFacebook configuration done at the beginning of a Sinatra file.
Instance Method Details
#require_facebook(*args) ⇒ Object
ReFacebook configuration done at the beginning of a Sinatra file.
An example:
require_facebook(:api_key =>'MY_API_KEY',
:secret_key => 'MY_SECRET_KEY',
:canvas_url => 'http://apps.facebook.com/canvas-page',
:require_login => true,
:store => store)
- :api_key
-
Your application’s Facebook API key.
- :secret_key
-
Your application’s Facebook Secret key.
- :canvas_url
-
The full path to your canvas page.
- :require_login
-
If this is set to true then the user is redirected to
the login page where she needs to authenticate.
- :store
-
This currently uses memcache-client as the session store since
Rack doesn’t currently have non cookie based session stores.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/refacebook/sinatra.rb', line 42 def require_facebook *args settings = args[0] configure do set :canvas_url, settings[:canvas_url] end before do # Passes the request to the correct request method since canvas requests # come in as POSTs. if params["fb_sig_in_canvas"].eql? "1" and params["fb_sig_request_method"].eql? "GET" request.env['REQUEST_METHOD'] = 'GET' end if params['fb_sig_session_key'] @fbsession = settings[:store].get(params['fb_sig_session_key']) @fbsession = ReFacebook::Session.new(settings[:api_key], settings[:secret_key]) unless @fbsession @fbsession.update_session_params(params) expiry = @fbsession.expires.to_i - @fbsession.time.to_i settings[:store].set(params['fb_sig_session_key'], @fbsession, expiry) else # Just return a session, even if it's not a lasting session. @fbsession = ReFacebook::Session.new(settings[:api_key], settings[:secret_key]) end if settings[:require_login] and !params['fb_sig_session_key'] fbml_redirect(@fbsession.get_login_url(:next => link_from_canvas(request.fullpath), :canvas => true)) end end end |