facebooker 1.0.18 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/{History.txt → CHANGELOG.rdoc} +0 -0
- data/{COPYING → COPYING.rdoc} +0 -0
- data/{README.txt → README.rdoc} +11 -4
- data/Rakefile +18 -15
- data/{TODO.txt → TODO.rdoc} +0 -0
- data/generators/facebook/templates/config/facebooker.yml +3 -0
- data/init.rb +12 -61
- data/lib/facebooker.rb +22 -15
- data/lib/facebooker/adapters/adapter_base.rb +3 -0
- data/lib/facebooker/logging.rb +1 -1
- data/lib/facebooker/model.rb +6 -4
- data/lib/facebooker/models/user.rb +39 -4
- data/lib/facebooker/parser.rb +14 -0
- data/lib/facebooker/rails/controller.rb +34 -10
- data/lib/facebooker/rails/extensions/action_controller.rb +48 -0
- data/lib/facebooker/rails/extensions/rack_setup.rb +2 -0
- data/lib/facebooker/rails/extensions/routing.rb +15 -0
- data/lib/facebooker/rails/facebook_url_helper.rb +3 -3
- data/lib/facebooker/rails/facebook_url_rewriting.rb +18 -5
- data/lib/facebooker/rails/helpers.rb +19 -2
- data/lib/facebooker/rails/helpers/fb_connect.rb +20 -10
- data/lib/facebooker/rails/publisher.rb +9 -5
- data/lib/facebooker/service.rb +1 -2
- data/lib/facebooker/session.rb +13 -1
- data/lib/facebooker/version.rb +1 -1
- data/lib/rack/facebook.rb +77 -0
- data/lib/tasks/tunnel.rake +3 -3
- data/test/facebooker/logging_test.rb +2 -2
- data/test/facebooker/models/user_test.rb +39 -3
- data/test/facebooker/rails/publisher_test.rb +19 -3
- data/test/facebooker/rails_integration_test.rb +52 -6
- data/test/rack/facebook_test.rb +62 -0
- data/test/rails_test_helper.rb +2 -0
- metadata +21 -27
- data/CHANGELOG.txt +0 -0
- data/Manifest.txt +0 -127
- data/README +0 -46
- data/lib/facebooker/models/user.rb.orig +0 -396
- data/lib/facebooker/models/user.rb.rej +0 -17
- data/lib/facebooker/session.rb.orig +0 -564
- data/lib/facebooker/session.rb.rej +0 -29
File without changes
|
data/{COPYING → COPYING.rdoc}
RENAMED
File without changes
|
data/{README.txt → README.rdoc}
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
=
|
1
|
+
= Facebooker
|
2
2
|
|
3
3
|
* http://facebooker.rubyforge.org
|
4
4
|
|
@@ -22,6 +22,7 @@ Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[h
|
|
22
22
|
== SYNOPSIS:
|
23
23
|
|
24
24
|
View David Clements' {excellent tutorial}[http://apps.facebook.com/facebooker_tutorial] at {http://apps.facebook.com/facebooker_tutorial/}[http://apps.facebook.com/facebooker_tutorial] or check out {Developing Facebook Platform Applications with Rails}[http://www.pragprog.com/titles/mmfacer].
|
25
|
+
{Join the Mailing List}:[groups.google.com/group/facebooker]
|
25
26
|
|
26
27
|
== REQUIREMENTS:
|
27
28
|
|
@@ -29,7 +30,7 @@ None
|
|
29
30
|
|
30
31
|
== INSTALL:
|
31
32
|
|
32
|
-
|
33
|
+
=== Non Rails
|
33
34
|
|
34
35
|
The best way is:
|
35
36
|
|
@@ -39,7 +40,7 @@ If, for some reason, you can't/won't use RubyGems, you can do:
|
|
39
40
|
|
40
41
|
(sudo) ruby setup.rb
|
41
42
|
|
42
|
-
|
43
|
+
=== Rails
|
43
44
|
|
44
45
|
Facebooker can be installed as a Rails plugin by:
|
45
46
|
|
@@ -75,7 +76,13 @@ end
|
|
75
76
|
|
76
77
|
(The MIT License)
|
77
78
|
|
78
|
-
Copyright (c) 2008
|
79
|
+
Copyright (c) 2008-2009:
|
80
|
+
|
81
|
+
* Chad Fowler
|
82
|
+
* Patrick Ewing
|
83
|
+
* Mike Mangino
|
84
|
+
* Shane Vitarana
|
85
|
+
* Corey Innis
|
79
86
|
|
80
87
|
Permission is hereby granted, free of charge, to any person obtaining
|
81
88
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
@@ -9,20 +9,19 @@ rescue LoadError
|
|
9
9
|
$stderr.puts "Install the multi_rails gem to run tests against multiple versions of Rails"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
$: << File.dirname(__FILE__) + '/lib'
|
13
13
|
require './lib/facebooker.rb'
|
14
14
|
|
15
|
-
Hoe.new('facebooker', Facebooker::VERSION::STRING) do |p|
|
15
|
+
HOE = Hoe.new('facebooker', Facebooker::VERSION::STRING) do |p|
|
16
16
|
p.rubyforge_name = 'facebooker'
|
17
17
|
p.author = ['Chad Fowler', 'Patrick Ewing', 'Mike Mangino', 'Shane Vitarana', 'Corey Innis']
|
18
18
|
p.email = 'mmangino@elevatedrails.com'
|
19
|
-
p.
|
20
|
-
p.
|
21
|
-
p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
|
22
|
-
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
19
|
+
p.readme_file = 'README.rdoc'
|
20
|
+
p.history_file = 'CHANGELOG.rdoc'
|
23
21
|
p.remote_rdoc_dir = '' # Release to root
|
24
22
|
p.test_globs = 'test/**/*_test.rb'
|
25
23
|
p.extra_deps << ['json', '>= 1.0.0']
|
24
|
+
p.extra_rdoc_files = FileList['*.rdoc']
|
26
25
|
end
|
27
26
|
|
28
27
|
require 'rcov/rcovtask'
|
@@ -42,16 +41,20 @@ namespace :test do
|
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
require 'erb'
|
44
|
+
namespace :gem do
|
45
|
+
task :spec do
|
46
|
+
File.open("#{HOE.name}.gemspec", 'w') do |f|
|
47
|
+
f.write(HOE.spec.to_ruby)
|
48
|
+
end
|
49
|
+
end
|
52
50
|
|
53
|
-
|
54
|
-
|
51
|
+
namespace :spec do
|
52
|
+
task :dev do
|
53
|
+
File.open("#{HOE.name}.gemspec", 'w') do |f|
|
54
|
+
HOE.spec.version = "#{HOE.version}.#{Time.now.strftime("%Y%m%d%H%M%S")}"
|
55
|
+
f.write(HOE.spec.to_ruby)
|
56
|
+
end
|
57
|
+
end
|
55
58
|
end
|
56
59
|
end
|
57
60
|
|
data/{TODO.txt → TODO.rdoc}
RENAMED
File without changes
|
@@ -20,6 +20,7 @@ development:
|
|
20
20
|
public_host:
|
21
21
|
public_port: 4007
|
22
22
|
local_port: 3000
|
23
|
+
server_alive_interval: 0
|
23
24
|
|
24
25
|
test:
|
25
26
|
api_key:
|
@@ -32,6 +33,7 @@ test:
|
|
32
33
|
public_host:
|
33
34
|
public_port: 4007
|
34
35
|
local_port: 3000
|
36
|
+
server_alive_interval: 0
|
35
37
|
|
36
38
|
production:
|
37
39
|
api_key:
|
@@ -44,3 +46,4 @@ production:
|
|
44
46
|
public_host:
|
45
47
|
public_port: 4007
|
46
48
|
local_port: 3000
|
49
|
+
server_alive_interval: 0
|
data/init.rb
CHANGED
@@ -9,64 +9,15 @@ FACEBOOKER = Facebooker.load_configuration(facebook_config)
|
|
9
9
|
Facebooker.logger = RAILS_DEFAULT_LOGGER if Object.const_defined? :RAILS_DEFAULT_LOGGER
|
10
10
|
|
11
11
|
require 'net/http_multipart_post'
|
12
|
-
|
13
|
-
require 'facebooker/rails/
|
14
|
-
require 'facebooker/rails/
|
15
|
-
require 'facebooker/rails/
|
16
|
-
require 'facebooker/rails/
|
17
|
-
require 'facebooker/rails/
|
18
|
-
require 'facebooker/rails/
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
subclass.send(:include,Facebooker::Rails::Controller)
|
25
|
-
subclass.helper Facebooker::Rails::Helpers
|
26
|
-
end
|
27
|
-
end
|
28
|
-
class << self
|
29
|
-
alias_method_chain :inherited, :facebooker
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
class ActionController::Routing::Route
|
35
|
-
def recognition_conditions_with_facebooker
|
36
|
-
defaults = recognition_conditions_without_facebooker
|
37
|
-
defaults << " env[:canvas] == conditions[:canvas] " if conditions[:canvas]
|
38
|
-
defaults
|
39
|
-
end
|
40
|
-
alias_method_chain :recognition_conditions, :facebooker
|
41
|
-
end
|
42
|
-
|
43
|
-
# When making get requests, Facebook sends fb_sig parameters both in the query string
|
44
|
-
# and also in the post body. We want to ignore the query string ones because they are one
|
45
|
-
# request out of date
|
46
|
-
# We only do thise when there are POST parameters so that IFrame linkage still works
|
47
|
-
class ActionController::AbstractRequest
|
48
|
-
def query_parameters_with_facebooker
|
49
|
-
if request_parameters.blank?
|
50
|
-
query_parameters_without_facebooker
|
51
|
-
else
|
52
|
-
(query_parameters_without_facebooker||{}).reject {|key,value| key.to_s =~ /^fb_sig/}
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
alias_method_chain :query_parameters, :facebooker
|
57
|
-
end
|
58
|
-
|
59
|
-
# We turn off route optimization to make named routes use our code for figuring out if they should go to the session
|
60
|
-
# If this fails, it means we're on rails 1.2, we can ignore it
|
61
|
-
begin
|
62
|
-
ActionController::Base::optimise_named_routes = false
|
63
|
-
rescue NoMethodError=>e
|
64
|
-
nil
|
65
|
-
end
|
66
|
-
|
67
|
-
# pull :canvas=> into env in routing to allow for conditions
|
68
|
-
ActionController::Routing::RouteSet.send :include, Facebooker::Rails::Routing::RouteSetExtensions
|
69
|
-
ActionController::Routing::RouteSet::Mapper.send :include, Facebooker::Rails::Routing::MapperExtensions
|
70
|
-
|
71
|
-
Mime::Type.register_alias "text/html", :fbml
|
72
|
-
Mime::Type.register_alias "text/javascript", :fbjs
|
12
|
+
if defined? Rails
|
13
|
+
require 'facebooker/rails/controller'
|
14
|
+
require 'facebooker/rails/facebook_url_rewriting'
|
15
|
+
require 'facebooker/rails/facebook_session_handling' if Rails.version < '2.3'
|
16
|
+
require 'facebooker/rails/facebook_request_fix' if Rails.version < '2.3'
|
17
|
+
require 'facebooker/rails/routing'
|
18
|
+
require 'facebooker/rails/facebook_pretty_errors' rescue nil
|
19
|
+
require 'facebooker/rails/facebook_url_helper'
|
20
|
+
require 'facebooker/rails/extensions/rack_setup' if Rails.version > '2.3'
|
21
|
+
require 'facebooker/rails/extensions/action_controller'
|
22
|
+
require 'facebooker/rails/extensions/routing'
|
23
|
+
end
|
data/lib/facebooker.rb
CHANGED
@@ -28,27 +28,34 @@ module Facebooker
|
|
28
28
|
def load_configuration(facebooker_yaml_file)
|
29
29
|
if File.exist?(facebooker_yaml_file)
|
30
30
|
if defined? RAILS_ENV
|
31
|
-
|
31
|
+
config = YAML.load_file(facebooker_yaml_file)[RAILS_ENV]
|
32
32
|
else
|
33
|
-
|
33
|
+
config = YAML.load_file(facebooker_yaml_file)
|
34
34
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
35
|
+
apply_configuration(config)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Sets the Facebook environment based on a hash of options.
|
40
|
+
# By default the hash passed in is loaded from facebooker.yml, but it can also be passed in
|
41
|
+
# manually every request to run multiple Facebook apps off one Rails app.
|
42
|
+
def apply_configuration(config)
|
43
|
+
ENV['FACEBOOK_API_KEY'] = config['api_key']
|
44
|
+
ENV['FACEBOOK_SECRET_KEY'] = config['secret_key']
|
45
|
+
ENV['FACEBOOKER_RELATIVE_URL_ROOT'] = config['canvas_page_name']
|
46
|
+
ENV['FACEBOOKER_API'] = config['api']
|
47
|
+
if config.has_key?('set_asset_host_to_callback_url')
|
48
|
+
Facebooker.set_asset_host_to_callback_url = config['set_asset_host_to_callback_url']
|
49
|
+
end
|
50
|
+
if Object.const_defined?("ActionController") and Facebooker.set_asset_host_to_callback_url
|
51
|
+
ActionController::Base.asset_host = config['callback_url']
|
47
52
|
end
|
53
|
+
Facebooker.timeout = config['timeout']
|
54
|
+
@facebooker_configuration = config
|
48
55
|
end
|
49
56
|
|
50
57
|
def facebooker_config
|
51
|
-
@facebooker_configuration
|
58
|
+
@facebooker_configuration || {} # to prevent pretty_errors error if the config hasn't been set yet
|
52
59
|
end
|
53
60
|
|
54
61
|
def current_adapter=(adapter_class)
|
data/lib/facebooker/logging.rb
CHANGED
data/lib/facebooker/model.rb
CHANGED
@@ -122,10 +122,12 @@ module Facebooker
|
|
122
122
|
unless hash.nil? || hash.empty?
|
123
123
|
hash.each do |key, value|
|
124
124
|
set_attr_method = "#{key}="
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
125
|
+
unless value.nil?
|
126
|
+
if respond_to?(set_attr_method)
|
127
|
+
self.__send__(set_attr_method, value)
|
128
|
+
else
|
129
|
+
Facebooker::Logging.log_info("**Warning**, Attempt to set non-attribute: #{key}",hash)
|
130
|
+
end
|
129
131
|
end
|
130
132
|
end
|
131
133
|
@populated = true
|
@@ -10,7 +10,7 @@ module Facebooker
|
|
10
10
|
include Model
|
11
11
|
attr_accessor :message, :time, :status_id
|
12
12
|
end
|
13
|
-
FIELDS = [:status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :uid, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url, :proxied_email, :email_hashes, :allowed_restrictions]
|
13
|
+
FIELDS = [:status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :uid, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url, :proxied_email, :email_hashes, :allowed_restrictions, :pic_with_logo, :pic_big_with_logo, :pic_small_with_logo, :pic_square_with_logo]
|
14
14
|
STANDARD_FIELDS = [:uid, :first_name, :last_name, :name, :timezone, :birthday, :sex, :affiliations, :locale, :profile_url, :pic_square]
|
15
15
|
populating_attr_accessor *FIELDS
|
16
16
|
attr_reader :affiliations
|
@@ -245,17 +245,17 @@ module Facebooker
|
|
245
245
|
#
|
246
246
|
# This does not set profile actions, that should be done with profile_action=
|
247
247
|
def profile_fbml=(markup)
|
248
|
-
set_profile_fbml(markup, nil, nil)
|
248
|
+
set_profile_fbml(markup, nil, nil, nil)
|
249
249
|
end
|
250
250
|
|
251
251
|
##
|
252
252
|
# Set the mobile profile FBML
|
253
253
|
def mobile_fbml=(markup)
|
254
|
-
set_profile_fbml(nil, markup, nil)
|
254
|
+
set_profile_fbml(nil, markup, nil,nil)
|
255
255
|
end
|
256
256
|
|
257
257
|
def profile_action=(markup)
|
258
|
-
set_profile_fbml(nil, nil, markup)
|
258
|
+
set_profile_fbml(nil, nil, markup,nil)
|
259
259
|
end
|
260
260
|
|
261
261
|
def profile_main=(markup)
|
@@ -377,6 +377,41 @@ module Facebooker
|
|
377
377
|
ret
|
378
378
|
end
|
379
379
|
end
|
380
|
+
|
381
|
+
# Get a count of unconnected friends
|
382
|
+
def getUnconnectedFriendsCount
|
383
|
+
session.post("facebook.connect.getUnconnectedFriendsCount")
|
384
|
+
end
|
385
|
+
|
386
|
+
|
387
|
+
# Unregister an array of email hashes
|
388
|
+
def self.unregister(email_hashes)
|
389
|
+
Facebooker::Session.create.post("facebook.connect.unregisterUsers",:email_hashes=>email_hashes.to_json) do |ret|
|
390
|
+
ret.each do |hash|
|
391
|
+
email_hashes.delete(hash)
|
392
|
+
end
|
393
|
+
unless email_hashes.empty?
|
394
|
+
e=Facebooker::Session::UserUnRegistrationFailed.new
|
395
|
+
e.failed_users = email_hashes
|
396
|
+
raise e
|
397
|
+
end
|
398
|
+
ret
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
# unregister an array of email addresses
|
403
|
+
def self.unregister_emails(emails)
|
404
|
+
emails_hash = {}
|
405
|
+
emails.each {|e| emails_hash[hash_email(e)] = e}
|
406
|
+
begin
|
407
|
+
unregister(emails_hash.keys).collect {|r| emails_hash[r]}
|
408
|
+
rescue
|
409
|
+
# re-raise with emails instead of hashes.
|
410
|
+
e = Facebooker::Session::UserUnRegistrationFailed.new
|
411
|
+
e.failed_users = $!.failed_users.collect { |f| emails_hash[f] }
|
412
|
+
raise e
|
413
|
+
end
|
414
|
+
end
|
380
415
|
|
381
416
|
def self.hash_email(email)
|
382
417
|
email = email.downcase.strip
|
data/lib/facebooker/parser.rb
CHANGED
@@ -96,6 +96,18 @@ module Facebooker
|
|
96
96
|
array_of_text_values(element("connect_registerUsers_response", data), "connect_registerUsers_response_elt")
|
97
97
|
end
|
98
98
|
end
|
99
|
+
|
100
|
+
class UnregisterUsers < Parser
|
101
|
+
def self.process(data)
|
102
|
+
array_of_text_values(element("connect_unregisterUsers_response", data), "connect_unregisterUsers_response_elt")
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
class GetUnconnectedFriendsCount < Parser
|
107
|
+
def self.process(data)
|
108
|
+
hash_or_value_for(element("connect_getUnconnectedFriendsCount_response",data)).to_i
|
109
|
+
end
|
110
|
+
end
|
99
111
|
|
100
112
|
class GetSession < Parser#:nodoc:
|
101
113
|
def self.process(data)
|
@@ -530,6 +542,8 @@ module Facebooker
|
|
530
542
|
'facebook.auth.createToken' => CreateToken,
|
531
543
|
'facebook.auth.getSession' => GetSession,
|
532
544
|
'facebook.connect.registerUsers' => RegisterUsers,
|
545
|
+
'facebook.connect.unregisterUsers' => UnregisterUsers,
|
546
|
+
'facebook.connect.getUnconnectedFriendsCount' => GetUnconnectedFriendsCount,
|
533
547
|
'facebook.users.getInfo' => UserInfo,
|
534
548
|
'facebook.users.getStandardInfo' => UserStandardInfo,
|
535
549
|
'facebook.users.setStatus' => SetStatus,
|
@@ -6,7 +6,7 @@ module Facebooker
|
|
6
6
|
include Facebooker::Rails::ProfilePublisherExtensions
|
7
7
|
def self.included(controller)
|
8
8
|
controller.extend(ClassMethods)
|
9
|
-
|
9
|
+
controller.before_filter :set_adapter
|
10
10
|
controller.before_filter :set_facebook_request_format
|
11
11
|
controller.helper_attr :facebook_session_parameters
|
12
12
|
controller.helper_method :request_comes_from_facebook?
|
@@ -45,6 +45,27 @@ module Facebooker
|
|
45
45
|
@facebook_params ||= verified_facebook_params
|
46
46
|
end
|
47
47
|
|
48
|
+
# Redirects the top window to the given url if the content is in an iframe, otherwise performs
|
49
|
+
# a normal redirect_to call.
|
50
|
+
def top_redirect_to(*args)
|
51
|
+
if request_is_facebook_iframe?
|
52
|
+
@redirect_url = url_for(*args)
|
53
|
+
render :layout => false, :inline => <<-HTML
|
54
|
+
<html><head>
|
55
|
+
<script type="text/javascript">
|
56
|
+
window.top.location.href = <%= @redirect_url.to_json -%>;
|
57
|
+
</script>
|
58
|
+
<noscript>
|
59
|
+
<meta http-equiv="refresh" content="0;url=<%=h @redirect_url %>" />
|
60
|
+
<meta http-equiv="window-target" content="_top" />
|
61
|
+
</noscript>
|
62
|
+
</head></html>
|
63
|
+
HTML
|
64
|
+
else
|
65
|
+
redirect_to(*args)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
48
69
|
def redirect_to(*args)
|
49
70
|
if request_is_for_a_facebook_canvas? and !request_is_facebook_tab?
|
50
71
|
render :text => fbml_redirect_tag(*args)
|
@@ -104,8 +125,7 @@ module Facebooker
|
|
104
125
|
|
105
126
|
#returning gracefully if the cookies aren't set or have expired
|
106
127
|
return unless parsed['session_key'] && parsed['user'] && parsed['expires'] && parsed['ss']
|
107
|
-
return unless Time.at(parsed['expires'].to_f) > Time.now || (parsed['expires'] == "0")
|
108
|
-
|
128
|
+
return unless Time.at(parsed['expires'].to_s.to_f) > Time.now || (parsed['expires'] == "0")
|
109
129
|
#if we have the unexpired cookies, we'll throw an exception if the sig doesn't verify
|
110
130
|
verify_signature(parsed,cookies[Facebooker.api_key])
|
111
131
|
|
@@ -141,7 +161,7 @@ module Facebooker
|
|
141
161
|
def create_new_facebook_session_and_redirect!
|
142
162
|
session[:facebook_session] = new_facebook_session
|
143
163
|
url_params = after_facebook_login_url.nil? ? {} : {:next=>after_facebook_login_url}
|
144
|
-
|
164
|
+
top_redirect_to session[:facebook_session].login_url(url_params) unless @installation_required
|
145
165
|
false
|
146
166
|
end
|
147
167
|
|
@@ -219,8 +239,12 @@ module Facebooker
|
|
219
239
|
!params["fb_sig_in_profile_tab"].blank?
|
220
240
|
end
|
221
241
|
|
242
|
+
def request_is_facebook_iframe?
|
243
|
+
!params["fb_sig_in_iframe"].blank?
|
244
|
+
end
|
245
|
+
|
222
246
|
def request_is_facebook_ajax?
|
223
|
-
params["fb_sig_is_mockajax"]=="1" || params["fb_sig_is_ajax"]=="1"
|
247
|
+
params["fb_sig_is_mockajax"]=="1" || params["fb_sig_is_ajax"]=="1" || params["fb_sig_is_ajax"]==true || params["fb_sig_is_mockajax"]==true
|
224
248
|
end
|
225
249
|
def xml_http_request?
|
226
250
|
request_is_facebook_ajax? || super
|
@@ -246,7 +270,7 @@ module Facebooker
|
|
246
270
|
end
|
247
271
|
|
248
272
|
def application_needs_permission(perm)
|
249
|
-
|
273
|
+
top_redirect_to(facebook_session.permission_url(perm))
|
250
274
|
end
|
251
275
|
|
252
276
|
def has_extended_permission?(perm)
|
@@ -266,14 +290,14 @@ module Facebooker
|
|
266
290
|
|
267
291
|
def application_is_not_installed_by_facebook_user
|
268
292
|
url_params = after_facebook_login_url.nil? ? {} : { :next => after_facebook_login_url }
|
269
|
-
|
293
|
+
top_redirect_to session[:facebook_session].install_url(url_params)
|
270
294
|
end
|
271
295
|
|
272
296
|
def set_facebook_request_format
|
273
297
|
if request_is_facebook_ajax?
|
274
|
-
|
275
|
-
elsif request_comes_from_facebook?
|
276
|
-
|
298
|
+
request.format = :fbjs
|
299
|
+
elsif request_comes_from_facebook? && !request_is_facebook_iframe?
|
300
|
+
request.format = :fbml
|
277
301
|
end
|
278
302
|
end
|
279
303
|
|