facebook_rails 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,6 +9,26 @@ module FacebookRailsController
9
9
  FACEBOOK['f8app_callback'].to_s + path
10
10
  end
11
11
 
12
+ def microsite_href(path = '/')
13
+ FACEBOOK['microsite_home'].to_s + path
14
+ end
15
+
16
+ def smart_href(path = '/')
17
+ if in_facebook_app?
18
+ direct_href(path)
19
+ else
20
+ microsite_href(path)
21
+ end
22
+ end
23
+
24
+ def in_facebook_app?
25
+ FACEBOOK['f8app_host'].blank? or request.host == FACEBOOK['f8app_host']
26
+ end
27
+
28
+ def in_microsite?
29
+ !in_facebook_app?
30
+ end
31
+
12
32
  def facebook_api
13
33
  @facebook_api ||= Koala::Facebook::API.new(session[:access_token])
14
34
  end
@@ -136,7 +156,8 @@ module FacebookRailsController
136
156
  #First check we received the call with a signed_request parameter, as that means a fresh token
137
157
  if params[:signed_request]
138
158
  fb_oauth = Koala::Facebook::OAuth.new
139
- f8_params = fb_oauth.parse_signed_request(params.delete(:signed_request))
159
+ @f8_params = f8_params = fb_oauth.parse_signed_request(params.delete(:signed_request))
160
+ session[:fan_page_id] = f8_params["page"]["id"] if f8_params["page"]
140
161
  session[:f8_locale] = (f8_params and f8_params["user"]) ? f8_params["user"]["locale"] : nil
141
162
  #puts "request params: #{ f8_params.inspect }"
142
163
  if f8_params["oauth_token"]
@@ -3,17 +3,31 @@ module FacebookRailsHelper
3
3
  return '<script>' +
4
4
  'if (top == self)' +
5
5
  '{' +
6
- "top.location = '#{facebook_href(url_for( { :controller => controller.controller_name, :action => controller.action_name}.merge params.reject {|k,v| k == 'signed_request'}))}';" +
6
+ "top.location = '#{facebook_href(url_for({ :controller => controller.controller_name, :action => controller.action_name }.merge params.reject{ |k,v| k == 'signed_request' }))}';" +
7
7
  '}' +
8
8
  '</script>'
9
9
  end
10
10
 
11
- def facebook_initialization resize = :auto, app_id = FACEBOOK['app_id'], user_f8id = nil
11
+ def reload_back_to_microsite_if_needed_js
12
+ return '<script>' +
13
+ 'if (top != self)' +
14
+ '{' +
15
+ "top.location = '#{microsite_href(url_for({ :controller => controller.controller_name, :action => controller.action_name }.merge params.reject{ |k,v| k == 'signed_request' }))}';" +
16
+ '}' +
17
+ '</script>'
18
+ end
19
+
20
+ def facebook_initialization options = {}
21
+ options[:resize] = :auto unless options.has_key?(:resize)
22
+ options[:init] ||= {}
23
+ options[:init][:appId] ||= FACEBOOK['app_id'].to_s
24
+ options[:init][:status] = true unless options.has_key?(:status)
25
+ options[:init][:cookie] = true unless options.has_key?(:cookie)
12
26
  begin
13
- user ||= current_user_f8id
27
+ options[:user_f8id] = current_user_f8id
14
28
  rescue Exception => e
15
29
  logger.info "current_user_f8id exception #{ e.to_s }"
16
- end
30
+ end unless options.has_key?(:user_f8id)
17
31
  onload_resize = %{
18
32
  var domLoaded = false;
19
33
  var facebookLoaded = false;
@@ -48,11 +62,11 @@ module FacebookRailsHelper
48
62
  });
49
63
  }
50
64
 
51
- login_status = if user_f8id
65
+ login_status = if options[:user_f8id]
52
66
  %{
53
67
  FB.getLoginStatus(function(response) {
54
- if ((response.authResponse && response.authResponse.userID == '#{ user_f8id }') ||
55
- (response.session && response.session.uid == '#{ user_f8id }')) {
68
+ if ((response.authResponse && response.authResponse.userID == '#{ options[:user_f8id] }') ||
69
+ (response.session && response.session.uid == '#{ options[:user_f8id] }')) {
56
70
  // logged in and connected user - continue
57
71
  $(document).trigger('got_facebook_status');
58
72
  } else {
@@ -72,15 +86,12 @@ module FacebookRailsHelper
72
86
  %{
73
87
  <div id="fb-root"></div>
74
88
  <script type="text/javascript">
75
- #{ onload_resize if resize == :onload }
89
+ #{ onload_resize if options[:resize] == :onload }
76
90
  window.fbAsyncInit = function() {
77
- FB.init({ appId: '#{ app_id }',
78
- status: true,
79
- cookie: true,
80
- xfbml: true });
91
+ FB.init({ #{ options[:init].collect{ |key, value| "#{ key }: #{ value }" }.join(', ') } });
81
92
  $(document).trigger('facebook_init');
82
- #{ 'facebookLoaded = true; pageLoad();' if resize == :onload }
83
- #{ 'FB.Canvas.setAutoGrow();' if resize == :auto }
93
+ #{ 'facebookLoaded = true; pageLoad();' if options[:resize] == :onload }
94
+ #{ 'FB.Canvas.setAutoGrow();' if options[:resize] == :auto }
84
95
  #{ login_status }
85
96
  };
86
97
 
@@ -59,6 +59,11 @@ module FacebookRails
59
59
 
60
60
  ActionController::Base.send :helper_method, :facebook_href
61
61
  ActionController::Base.send :helper_method, :direct_href
62
+ ActionController::Base.send :helper_method, :microsite_href
63
+ ActionController::Base.send :helper_method, :smart_href
64
+ ActionController::Base.send :helper_method, :in_facebook_app?
65
+ ActionController::Base.send :helper_method, :in_microsite?
66
+ ActionController::Base.send :helper_method, :authenticated_by_facebook?
62
67
  ActionController::Base.send :helper_method, :current_user_f8id
63
68
  ActionController::Base.send :helper_method, :get_facebook_locale
64
69
  end
@@ -1,3 +1,3 @@
1
1
  module FacebookRails
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,4 +1,4 @@
1
- #require 'rails/generators'
1
+ require 'rails/generators'
2
2
 
3
3
  class FacebookRailsGenerator < Rails::Generators::Base
4
4
  def self.source_root
@@ -7,6 +7,8 @@ development:
7
7
  #Slijede drap dodaci
8
8
  f8app_home: http://apps.facebook.com/CANVAS_NAME #bez zadnjeg '/'
9
9
  f8app_callback: CALLBACK_URL #bez zadnjeg '/'
10
+ #f8app_host: HOST_NAME #needed only when microsite exists
11
+ #microsite_home: http://microsite.com #bez zadnjeg '/'
10
12
  #server_subdir:
11
13
  timeout: 3
12
14
 
@@ -16,6 +18,8 @@ test:
16
18
  #Slijede drap dodaci
17
19
  f8app_home: CANVAS_URL #bez zadnjeg '/'
18
20
  f8app_callback: CALLBACK_URL #bez zadnjeg '/'
21
+ #f8app_host: HOST_NAME #needed only when microsite exists
22
+ #microsite_home: http://microsite.com #bez zadnjeg '/'
19
23
  #server_subdir:
20
24
  timeout: 3
21
25
 
@@ -25,5 +29,7 @@ production:
25
29
  #Slijede drap dodaci
26
30
  f8app_home: CANVAS_URL #bez zadnjeg '/'
27
31
  f8app_callback: CALLBACK_URL #bez zadnjeg '/'
32
+ #f8app_host: HOST_NAME #needed only when microsite exists
33
+ #microsite_home: http://microsite.com #bez zadnjeg '/'
28
34
  #server_subdir:
29
35
  timeout: 3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebook_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
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-05-04 00:00:00.000000000Z
12
+ date: 2012-05-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70284682468040 !ruby/object:Gem::Requirement
16
+ requirement: &70276425465420 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70284682468040
24
+ version_requirements: *70276425465420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: koala
27
- requirement: &70284682467360 !ruby/object:Gem::Requirement
27
+ requirement: &70276425464920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.4.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70284682467360
35
+ version_requirements: *70276425464920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sqlite3
38
- requirement: &70284682466860 !ruby/object:Gem::Requirement
38
+ requirement: &70276425464540 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70284682466860
46
+ version_requirements: *70276425464540
47
47
  description: Manages collecting of facebook authentication and provides helpers. It
48
48
  uses koala and is built for Rails 3.
49
49
  email: