mini_fb 1.1.7 → 1.1.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -3,7 +3,7 @@ MiniFB - the simple miniature facebook library
3
3
 
4
4
  MiniFB is a small, lightweight Ruby library for interacting with the [Facebook API](http://wiki.developers.facebook.com/index.php/API).
5
5
 
6
- Brought to you by: [![Appoxy](http://www.simpledeployr.com/images/global/appoxy-small.png)](http://www.appoxy.com)
6
+ Brought to you by: [![Appoxy](https://lh5.googleusercontent.com/_-J9DSaseOX8/TX2Bq564w-I/AAAAAAAAxYU/xjeReyoxa8o/s800/appoxy-small%20%282%29.png)](http://www.appoxy.com)
7
7
 
8
8
  Support
9
9
  --------
data/lib/mini_fb.rb CHANGED
@@ -321,6 +321,16 @@ module MiniFB
321
321
  return sig == expected_sig
322
322
  end
323
323
 
324
+ # This function decodes the data sent by Facebook and returns a Hash.
325
+ # See: http://developers.facebook.com/docs/authentication/canvas
326
+ def self.signed_request_params(secret, req)
327
+ s, p = req.split(".")
328
+ p = base64_url_decode(p)
329
+ h = JSON.parse(p)
330
+ h.delete('algorithm') if h['algorithm'] == 'HMAC-SHA256'
331
+ h
332
+ end
333
+
324
334
  # Ruby's implementation of base64 decoding seems to be reading the string in multiples of 4 and ignoring
325
335
  # any extra characters if there are no white-space characters at the end. Since facebook does not take this
326
336
  # into account, this function fills any string with white spaces up to the point where it becomes divisible
@@ -484,7 +494,7 @@ module MiniFB
484
494
  def self.oauth_url(app_id, redirect_uri, options={})
485
495
  oauth_url = "#{graph_base}oauth/authorize"
486
496
  oauth_url << "?client_id=#{app_id}"
487
- oauth_url << "&redirect_uri=#{URI.escape(redirect_uri)}"
497
+ oauth_url << "&redirect_uri=#{CGI.escape(redirect_uri)}"
488
498
  # oauth_url << "&scope=#{options[:scope]}" if options[:scope]
489
499
  oauth_url << ("&" + options.map { |k, v| "%s=%s" % [k, v] }.join('&')) unless options.empty?
490
500
  oauth_url
@@ -494,9 +504,27 @@ module MiniFB
494
504
  def self.oauth_access_token(app_id, redirect_uri, secret, code)
495
505
  oauth_url = "#{graph_base}oauth/access_token"
496
506
  oauth_url << "?client_id=#{app_id}"
497
- oauth_url << "&redirect_uri=#{URI.escape(redirect_uri)}"
507
+ oauth_url << "&redirect_uri=#{CGI.escape(redirect_uri)}"
508
+ oauth_url << "&client_secret=#{secret}"
509
+ oauth_url << "&code=#{CGI.escape(code)}"
510
+ resp = RestClient.get oauth_url
511
+ puts 'resp=' + resp.body.to_s if @@logging
512
+ params = {}
513
+ params_array = resp.split("&")
514
+ params_array.each do |p|
515
+ ps = p.split("=")
516
+ params[ps[0]] = ps[1]
517
+ end
518
+ return params
519
+ end
520
+
521
+ # returns a hash with one value being 'access_token', the other being 'expires'
522
+ def self.fb_exchange_token(app_id, secret, access_token)
523
+ oauth_url = "#{graph_base}oauth/access_token"
524
+ oauth_url << "?client_id=#{app_id}"
498
525
  oauth_url << "&client_secret=#{secret}"
499
- oauth_url << "&code=#{URI.escape(code)}"
526
+ oauth_url << "&grant_type=fb_exchange_token"
527
+ oauth_url << "&fb_exchange_token=#{CGI.escape(access_token)}"
500
528
  resp = RestClient.get oauth_url
501
529
  puts 'resp=' + resp.body.to_s if @@logging
502
530
  params = {}
@@ -627,13 +655,13 @@ module MiniFB
627
655
  resp = RestClient.post url, options[:params]
628
656
  else
629
657
  if options[:params] && options[:params].size > 0
630
- url += '?' + options[:params].map { |k, v| URI.escape("%s=%s" % [k, v]) }.join('&')
658
+ url += '?' + options[:params].map { |k, v| CGI.escape(k.to_s) + '=' + CGI.escape(v.to_s) }.join('&')
631
659
  end
632
660
  @@log.debug 'url_get=' + url if @@logging
633
661
  resp = RestClient.get url
634
662
  end
635
663
 
636
- @@log.debug 'resp=' + resp.to_s
664
+ @@log.debug 'resp=' + resp.to_s if @@log.debug?
637
665
 
638
666
  if options[:response_type] == :params
639
667
  # Some methods return a param like string, for example: access_token=11935261234123|rW9JMxbN65v_pFWQl5LmHHABC
metadata CHANGED
@@ -1,93 +1,113 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mini_fb
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 1
8
- - 7
9
- version: 1.1.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.8
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Travis Reeder
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-12-13 00:00:00 -08:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-10-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rest-client
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
31
22
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
34
31
  name: hashie
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
35
39
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rest-client
48
+ requirement: !ruby/object:Gem::Requirement
37
49
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
44
54
  type: :runtime
45
- version_requirements: *id002
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: hashie
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
46
78
  description: Tiny facebook library
47
79
  email: travis@appoxy.com
48
80
  executables: []
49
-
50
81
  extensions: []
51
-
52
- extra_rdoc_files:
82
+ extra_rdoc_files:
53
83
  - LICENSE.txt
54
84
  - README.markdown
55
- files:
85
+ files:
56
86
  - lib/mini_fb.rb
57
87
  - LICENSE.txt
58
88
  - README.markdown
59
- - test/test_mini_fb.rb
60
- has_rdoc: true
61
89
  homepage: http://github.com/appoxy/mini_fb
62
90
  licenses: []
63
-
64
91
  post_install_message:
65
92
  rdoc_options: []
66
-
67
- require_paths:
93
+ require_paths:
68
94
  - lib
69
- required_ruby_version: !ruby/object:Gem::Requirement
95
+ required_ruby_version: !ruby/object:Gem::Requirement
70
96
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- segments:
75
- - 0
76
- version: "0"
77
- required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
102
  none: false
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- segments:
83
- - 0
84
- version: "0"
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
85
107
  requirements: []
86
-
87
108
  rubyforge_project:
88
- rubygems_version: 1.3.7
109
+ rubygems_version: 1.8.24
89
110
  signing_key:
90
111
  specification_version: 3
91
112
  summary: Tiny facebook library
92
- test_files:
93
- - test/test_mini_fb.rb
113
+ test_files: []
data/test/test_mini_fb.rb DELETED
@@ -1,69 +0,0 @@
1
- require 'test/unit'
2
- require 'rspec'
3
- require 'uri'
4
- require 'yaml'
5
- require 'active_support/core_ext'
6
- require '../lib/mini_fb'
7
-
8
- describe "Some Feature" do
9
-
10
- before :all do
11
- @is_setup = true
12
- @config = File.open(File.expand_path("~/.test_configs/mini_fb_tests.yml")) { |yf| YAML::load(yf) }
13
- puts "@config=" + @config.inspect
14
- MiniFB.log_level = :debug
15
-
16
- @oauth_url = MiniFB.oauth_url(@config['fb_app_id'], # your Facebook App ID (NOT API_KEY)
17
- "http://localhost:3000", # redirect url
18
- :scope=>MiniFB.scopes.join(","))
19
- puts "If you need an access token, go here in your browser:"
20
- puts "#{@oauth_url}"
21
- puts "Then grab the 'code' parameter in the redirect url and add it to mini_fb_tests.yml."
22
- end
23
-
24
-
25
-
26
- before :each do
27
- # this code runs once per-test
28
- end
29
-
30
- it "should do something useful, rather than just being called test1" do
31
- # el code here
32
- puts 'whatup'
33
- true.should be_true
34
- end
35
-
36
- it 'test_uri_escape' do
37
- URI.escape("x=y").should eq("x=y")
38
- end
39
-
40
- it 'test_authenticate_as_app' do
41
- res = MiniFB.authenticate_as_app(@config["fb_api_key"], @config["fb_secret"])
42
- puts 'res=' + res.inspect
43
- res.should include("access_token")
44
- res["access_token"].should match(/^#{@config['fb_app_id']}/)#starts_with?(@config["fb_app_id"].to_s)
45
- end
46
- end
47
-
48
-
49
- def access_token
50
- @config['access_token']
51
- end
52
-
53
-
54
- def test_me_with_fields
55
- fields = {
56
- 'interests' => [:name],
57
- 'activities'=> [:name],
58
- 'music' => [:name],
59
- 'videos' => [:name],
60
- 'television'=> [:name],
61
- 'movies' => [:name],
62
- 'likes' => [:name],
63
- 'work' => [:name],
64
- 'education' => [:name],
65
- 'books' => [:name]
66
- }
67
-
68
- snap = MiniFB.get(access_token, 'me', :fields =>fields.keys)
69
- end