fbk 1.1.0 → 1.2.0

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.
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