fbk 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -3
  3. data/lib/fbk.rb +39 -2
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8be4d53c3664aa08a1456e7576dd54cd28738815
4
- data.tar.gz: 0784b66698e16e4e5205a8034c3933060bf2eb3f
3
+ metadata.gz: ddfed1d9c297d6d674cb7214aafdefe1a6c9f729
4
+ data.tar.gz: 66e790af2c44bab2183547b745206aaf1216bbbc
5
5
  SHA512:
6
- metadata.gz: 4c7c5f7b0ce66b40d2cf631d5daf6c8d9ed0fea52d1493fab63228fed6ebb688c3fe155b641d4a44c2d94df3537f5c4fe48099f7e81571c316260e7f0fc874a2
7
- data.tar.gz: 3e78182652ac7ab705bb3affa50605baa4c86dd53a2bed3d5108eefd6ad9c0e91e5aa0d37f4cb3205a2e5470fc400d3b202a45e1cede1bf4cdb7c3857862de35
6
+ metadata.gz: c9728f2b374e5df72d00b23e7c7e948e16c692dbd29bfb67ff2e9e4b20964d030575357c03739d5ff573cbe5da9e72c3c4c8650ab24005d2b2943850ff7644b2
7
+ data.tar.gz: 9ceb5b78734db0e9d3c8b7ab47c195281d2a42ddb790823b3ff6a58773a413dd62b27eb030a169438811b95a9e65f5fe98e25d588972f63d2dc7f06606c29713
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # FBK
2
2
 
3
- You can use this library to implement Facebook login in your Ruby application.
3
+ Just a bunch of methods that may come in handy when interacting with the Facebook Graph API.
4
4
 
5
- We use this at [Chicisimo](https://github.com/chicisimo).
5
+ We use this gem at [Chicisimo](https://github.com/chicisimo).
6
6
 
7
7
  ## Usage
8
8
 
@@ -24,8 +24,12 @@ end
24
24
  get "/login/fb/token" do
25
25
  code = params[:code]
26
26
 
27
- access_token = FBK.get_access_token(redirect_uri: REDIRECT_URI, code: code) # => "H3UUnvsoymXtinqyofZtHqpqmTNkbJ7x5bpQFeFDGcmAy2THf9pfug2Eyx2ZSTnrqfMcDrUguzaytn4OZHCOyC6RsjEEM2MwHGWGVMwpzuSjWcjE1aS0dVPCTRrNm4bf6YmgVDS7JuUDb3Lxt0AoI0ucTmPdvnbrnkmunszoa0Y9KMJXyh2Nkf4PFgOo2bmjo6rVKzTY"
27
+ access_token = FBK.get_access_token(redirect_uri: REDIRECT_URI, code: code) # => "xxxx"
28
28
 
29
29
  user = FBK.get_user_info(access_token) # => {:id=>"xxxx", :first_name=>"Pedro", :gender=>"male", :last_name=>"Giménez", :link=>"https://www.facebook.com/pedrotgimenez", :locale=>"en_US", :name=>"Pedro Giménez", :timezone=>1, :updated_time=>"1955-02-24T00:00:00+0000", :username=>"pedrotgimenez", :verified=>true}
30
+
31
+ friends = FBK.get_user_friends(access_token) # => => ["xxxx", "xxxx"]
32
+
33
+ picture = FBK.get_user_picture(access_token, type: "square", height: 256) # => {:height=>320, :is_silhouette=>false, :url=>"https://scontent.xx.fbcdn.net/hprofile-xft1/v/t1.0-1/p320x320/xxxx.jpg", :width=>320}
30
34
  end
31
35
  ```
data/lib/fbk.rb CHANGED
@@ -35,12 +35,49 @@ module FBK
35
35
  end
36
36
 
37
37
  def get_user_info(token)
38
- response = Nestful.get("#{FACEBOOK_GRAPH_URL}/me?access_token=#{token}").body
39
- JSON.parse(response, symbolize_names: true)
38
+ get("#{FACEBOOK_GRAPH_URL}/me?access_token=#{token}")
39
+ end
40
+
41
+ def get_user_friends(token)
42
+ json = get("#{FACEBOOK_GRAPH_URL}/me/friends?access_token=#{token}")
43
+
44
+ friends = get_friends_ids(json)
45
+
46
+ return friends if only_one_page?(friends, json)
47
+
48
+ while (json = get(json[:paging][:next])) && !json[:data].empty? do
49
+ friends += get_friends_ids(json)
50
+ end
51
+
52
+ friends
53
+ end
54
+
55
+ def get_user_picture(token, params = {})
56
+ params[:access_token] = token
57
+ params[:client_id] = @client_id
58
+ params[:client_secret] = @client_secret
59
+ params[:redirect] = false
60
+
61
+ query_string = params_to_query_string(params)
62
+
63
+ get("#{FACEBOOK_GRAPH_URL}/me/picture?#{query_string}")[:data]
40
64
  end
41
65
 
42
66
  private
43
67
 
68
+ def get_friends_ids(json)
69
+ json[:data].map { |friend| friend[:id] }
70
+ end
71
+
72
+ def only_one_page?(friends, json)
73
+ friends.count == json[:summary][:total_count]
74
+ end
75
+
76
+ def get(endpoint)
77
+ response = Nestful.get(endpoint).body
78
+ JSON.parse(response, symbolize_names: true)
79
+ end
80
+
44
81
  def params_to_query_string(params)
45
82
  params.map { |k,v| "#{k}=#{v}" }.join("&")
46
83
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Gimenez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-09 00:00:00.000000000 Z
11
+ date: 2016-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nestful