doesfacebook 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -75,6 +75,14 @@ This allows your application to verify and properly handle requests from Faceboo
75
75
  additional data and parameters your app is sent by Facebook, such as the current user ID, active
76
76
  Facebook page, and more.
77
77
 
78
+ By default, to enhance your iframe development, the "signed_request" parameter from Facebook will be
79
+ stuffed into the session and subsequent requests that lack a "signed_request" parameter (links from
80
+ your internal iframe clicks, perhaps), will used this signed_request. This allows you to build a canvas
81
+ or page tab application like any other web application and not worry about passing around the signed_request
82
+ parameter yourself.
83
+
84
+ does_facebook :session=>false # <== Use this invocation to prevent session stuffing
85
+
78
86
  Within your controllers which declare _does_facebook_ (or inherit from a controller which does), you
79
87
  will now have access to the following niceties:
80
88
 
data/lib/doesfacebook.rb CHANGED
@@ -40,13 +40,13 @@ module ActionController
40
40
 
41
41
  # Call this method within your controller to parse configuration and enabled
42
42
  # session validation and parsing
43
- def self.does_facebook
43
+ def self.does_facebook(opts={})
44
44
  self.instance_eval do
45
45
  include DoesFacebook::Config
46
46
  include DoesFacebook::Controls
47
47
  include DoesFacebook::Filters
48
- prepend_before_filter :parse_signed_request
49
- prepend_before_filter :validate_signed_request
48
+ prepend_before_filter :parse_signed_request, :validate_signed_request
49
+ prepend_before_filter :sessionify_signed_request unless opts[:session]==false
50
50
  helper :does_facebook
51
51
 
52
52
  protected
@@ -8,6 +8,19 @@ module DoesFacebook
8
8
 
9
9
  protected
10
10
 
11
+ # Captures a signed_request parameter and manipulates the session to allow for
12
+ # a signed_request to be passed from iframe request to iframe request
13
+ def sessionify_signed_request
14
+ if request_parameter = request.params["signed_request"]
15
+ session[:signed_request] = request_parameter
16
+ logger.info " Facebook Signed Request received. Stored/updated in session."
17
+ else
18
+ params["signed_request"] = session[:signed_request]
19
+ logger.info " No Facebook Signed Request received. Loaded, if present, from session."
20
+ end
21
+ end
22
+
23
+
11
24
  # Ensures, using configuration options, that the request was signed by Facebook
12
25
  def validate_signed_request
13
26
  if request_parameter = request.params["signed_request"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doesfacebook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-30 00:00:00.000000000Z
12
+ date: 2012-05-18 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &2157105860 !ruby/object:Gem::Requirement
16
+ requirement: &2152342760 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2157105860
24
+ version_requirements: *2152342760
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: jeweler
27
- requirement: &2157105060 !ruby/object:Gem::Requirement
27
+ requirement: &2152340860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 1.5.1
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2157105060
35
+ version_requirements: *2152340860
36
36
  description: Paper-thin Facebook validation and signed request parsing Rails plugin
37
37
  email: info@awexomelabs.com
38
38
  executables: []