omniauth-facebook 6.0.0 → 8.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3b8b67acd7d8c1557f82b621f96931ce962e50567c1c0c0fde99c073ed9d662
4
- data.tar.gz: cff801f45a35bbb51d51729fc3e90ffc0a58bb9a175e59274755e7785256165c
3
+ metadata.gz: de07dc27eb8810abd1b2a688449e1ad0360f063a5c233c0c36f1902a721be927
4
+ data.tar.gz: f938ca12195ac5e3581e39802d5f54e82bae3fc22e71db51d1ce4a62b25750cd
5
5
  SHA512:
6
- metadata.gz: badf485d3c8bdd1d6c3fa15de6e8524aa0421c365a571ce655f66c34d61270580fb9669c297652eb51c94c03111a52310a8a70813a6de88d95ea4e749a01c118
7
- data.tar.gz: 0a064f3fc5060dfef9bee851e5188ba02c31fb62d3b07b4292699d8922059c5cf371825d94699f1b489a1a5c19c36a18024d92bdb5d79baa9b37d086c6e161b9
6
+ metadata.gz: 90f607d371c1e1b73cfb854d9fb1e0f7abb5e65d8e08d2043de57f20079ac4bcff5461f3bd3c536c47506ec174029a49cb500d536485649e4ac044cf5009ae8a
7
+ data.tar.gz: c30e200b472c2ddfbf9566ff14c2ca34e408a0380d41ed8328a2580fa21a3349f214767211d7574a744e9a8d35f61e44423a643a6a42419fa2f96d6f73ba38fd
data/.travis.yml CHANGED
@@ -1,10 +1,6 @@
1
- before_install:
2
- - gem update bundler
3
- - bundle --version
4
- - gem update --system
5
- - gem --version
1
+ language: ruby
2
+ cache: bundler
6
3
  rvm:
4
+ - 2.7
7
5
  - 2.6
8
6
  - 2.5
9
- - 2.4
10
- - 2.3
data/CHANGELOG.md CHANGED
@@ -1,4 +1,16 @@
1
- ## 6.0.0 2020-01-27)
1
+ ## 8.0.0 (2020-10-20)
2
+
3
+ Changes:
4
+
5
+ - user profile picture link includes access token (#344, @anklos)
6
+
7
+ ## 7.0.0 (2020-08-03)
8
+
9
+ Changes:
10
+
11
+ - bumped version of FB Graph API to v4.0
12
+
13
+ ## 6.0.0 (2020-01-27)
2
14
 
3
15
  Changes:
4
16
 
data/README.md CHANGED
@@ -41,7 +41,7 @@ Option name | Default | Explanation
41
41
  `scope` | `email` | A comma-separated list of permissions you want to request from the user. See the Facebook docs for a full list of available permissions: https://developers.facebook.com/docs/reference/login/
42
42
  `display` | `page` | The display context to show the authentication page. Options are: `page`, `popup` and `touch`. Read the Facebook docs for more details: https://developers.facebook.com/docs/reference/dialogs/oauth/
43
43
  `image_size` | `square` | Set the size for the returned image url in the auth hash. Valid options include `square` (50x50), `small` (50 pixels wide, variable height), `normal` (100 pixels wide, variable height), or `large` (about 200 pixels wide, variable height). Additionally, you can request a picture of a specific size by setting this option to a hash with `:width` and `:height` as keys. This will return an available profile picture closest to the requested size and requested aspect ratio. If only `:width` or `:height` is specified, we will return a picture whose width or height is closest to the requested size, respectively.
44
- `info_fields` | 'name,email' | Specify exactly which fields should be returned when getting the user's info. Value should be a comma-separated string as per https://developers.facebook.com/docs/graph-api/reference/user/ (only `/me` endpoint).
44
+ `info_fields` | `name,email` | Specify exactly which fields should be returned when getting the user's info. Value should be a comma-separated string as per https://developers.facebook.com/docs/graph-api/reference/user/ (only `/me` endpoint).
45
45
  `locale` | | Specify locale which should be used when getting the user's info. Value should be locale string as per https://developers.facebook.com/docs/reference/api/locale/.
46
46
  `auth_type` | | Optionally specifies the requested authentication features as a comma-separated list, as per https://developers.facebook.com/docs/facebook-login/reauthentication/. Valid values are `https` (checks for the presence of the secure cookie and asks for re-authentication if it is not present), and `reauthenticate` (asks the user to re-authenticate unconditionally). Use 'rerequest' when you want to request premissions. Default is `nil`.
47
47
  `secure_image_url` | `false` | Set to `true` to use https for the avatar image url returned in the auth hash.
@@ -58,14 +58,14 @@ end
58
58
 
59
59
  ### API Version
60
60
 
61
- OmniAuth Facebook uses versioned API endpoints by default (current v3.0). You can configure a different version via `client_options` hash passed to `provider`, specifically you should change the version in the `site` and `authorize_url` parameters. For example, to change to v4.0 (assuming that exists):
61
+ OmniAuth Facebook uses versioned API endpoints by default (current v4.0). You can configure a different version via `client_options` hash passed to `provider`, specifically you should change the version in the `site` and `authorize_url` parameters. For example, to change to v7.0 (assuming that exists):
62
62
 
63
63
  ```ruby
64
64
  use OmniAuth::Builder do
65
65
  provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'],
66
66
  client_options: {
67
- site: 'https://graph.facebook.com/v4.0',
68
- authorize_url: "https://www.facebook.com/v4.0/dialog/oauth"
67
+ site: 'https://graph.facebook.com/v7.0',
68
+ authorize_url: "https://www.facebook.com/v7.0/dialog/oauth"
69
69
  }
70
70
  end
71
71
  ```
data/example/app.rb CHANGED
@@ -29,7 +29,7 @@ get '/client-side' do
29
29
  window.fbAsyncInit = function() {
30
30
  FB.init({
31
31
  appId: '#{ENV['FACEBOOK_APP_ID']}',
32
- version: 'v3.0',
32
+ version: 'v4.0',
33
33
  cookie: true // IMPORTANT must enable cookies to allow the server to access the session
34
34
  });
35
35
  console.log("fb init");
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Facebook
3
- VERSION = '6.0.0'
3
+ VERSION = '8.0.0'
4
4
  end
5
5
  end
@@ -12,8 +12,8 @@ module OmniAuth
12
12
  DEFAULT_SCOPE = 'email'
13
13
 
14
14
  option :client_options, {
15
- site: 'https://graph.facebook.com/v3.0',
16
- authorize_url: "https://www.facebook.com/v3.0/dialog/oauth",
15
+ site: 'https://graph.facebook.com/v4.0',
16
+ authorize_url: "https://www.facebook.com/v4.0/dialog/oauth",
17
17
  token_url: 'oauth/access_token'
18
18
  }
19
19
 
@@ -161,13 +161,15 @@ module OmniAuth
161
161
  uri_class = options[:secure_image_url] ? URI::HTTPS : URI::HTTP
162
162
  site_uri = URI.parse(client.site)
163
163
  url = uri_class.build({host: site_uri.host, path: "#{site_uri.path}/#{uid}/picture"})
164
+ query = { access_token: access_token.token }
164
165
 
165
- query = if options[:image_size].is_a?(String) || options[:image_size].is_a?(Symbol)
166
- { type: options[:image_size] }
166
+ if options[:image_size].is_a?(String) || options[:image_size].is_a?(Symbol)
167
+ query[:type] = options[:image_size]
167
168
  elsif options[:image_size].is_a?(Hash)
168
- options[:image_size]
169
+ query.merge!(options[:image_size])
169
170
  end
170
- url.query = Rack::Utils.build_query(query) if query
171
+
172
+ url.query = Rack::Utils.build_query(query)
171
173
 
172
174
  url.to_s
173
175
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.authors = ['Mark Dodwell', 'Josef Šimánek']
9
9
  s.email = ['mark@madeofcode.com', 'retro@ballgag.cz']
10
10
  s.summary = 'Facebook OAuth2 Strategy for OmniAuth'
11
- s.homepage = 'https://github.com/mkdynamic/omniauth-facebook'
11
+ s.homepage = 'https://github.com/simi/omniauth-facebook'
12
12
  s.license = 'MIT'
13
13
 
14
14
  s.files = `git ls-files`.split("\n")
@@ -9,11 +9,11 @@ end
9
9
 
10
10
  class ClientTest < StrategyTestCase
11
11
  test 'has correct Facebook site' do
12
- assert_equal 'https://graph.facebook.com/v3.0', strategy.client.site
12
+ assert_equal 'https://graph.facebook.com/v4.0', strategy.client.site
13
13
  end
14
14
 
15
15
  test 'has correct authorize url' do
16
- assert_equal 'https://www.facebook.com/v3.0/dialog/oauth', strategy.client.options[:authorize_url]
16
+ assert_equal 'https://www.facebook.com/v4.0/dialog/oauth', strategy.client.options[:authorize_url]
17
17
  end
18
18
 
19
19
  test 'has correct token url with versioning' do
@@ -95,41 +95,52 @@ class UidTest < StrategyTestCase
95
95
  end
96
96
 
97
97
  class InfoTest < StrategyTestCase
98
+ def setup
99
+ super
100
+ @access_token = stub('OAuth2::AccessToken')
101
+ @access_token.stubs(:token).returns('test_access_token')
102
+ end
103
+
98
104
  test 'returns the secure facebook avatar url when `secure_image_url` option is specified' do
99
105
  @options = { secure_image_url: true }
100
106
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
101
107
  strategy.stubs(:raw_info).returns(raw_info)
102
- assert_equal 'https://graph.facebook.com/v3.0/321/picture', strategy.info['image']
108
+ strategy.stubs(:access_token).returns(@access_token)
109
+ assert_equal 'https://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image']
103
110
  end
104
111
 
105
112
  test 'returns the image_url based of the client site' do
106
113
  @options = { secure_image_url: true, client_options: {site: "https://blah.facebook.com/v2.2"}}
107
114
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
108
115
  strategy.stubs(:raw_info).returns(raw_info)
109
- assert_equal 'https://blah.facebook.com/v2.2/321/picture', strategy.info['image']
116
+ strategy.stubs(:access_token).returns(@access_token)
117
+ assert_equal "https://blah.facebook.com/v2.2/321/picture?access_token=test_access_token", strategy.info['image']
110
118
  end
111
119
 
112
120
  test 'returns the image with size specified in the `image_size` option' do
113
121
  @options = { image_size: 'normal' }
114
122
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
115
123
  strategy.stubs(:raw_info).returns(raw_info)
116
- assert_equal 'http://graph.facebook.com/v3.0/321/picture?type=normal', strategy.info['image']
124
+ strategy.stubs(:access_token).returns(@access_token)
125
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token&type=normal', strategy.info['image']
117
126
  end
118
127
 
119
128
  test 'returns the image with size specified as a symbol in the `image_size` option' do
120
129
  @options = { image_size: :normal }
121
130
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
122
131
  strategy.stubs(:raw_info).returns(raw_info)
123
- assert_equal 'http://graph.facebook.com/v3.0/321/picture?type=normal', strategy.info['image']
132
+ strategy.stubs(:access_token).returns(@access_token)
133
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token&type=normal', strategy.info['image']
124
134
  end
125
135
 
126
136
  test 'returns the image with width and height specified in the `image_size` option' do
127
137
  @options = { image_size: { width: 123, height: 987 } }
128
138
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
129
139
  strategy.stubs(:raw_info).returns(raw_info)
140
+ strategy.stubs(:access_token).returns(@access_token)
130
141
  assert_match 'width=123', strategy.info['image']
131
142
  assert_match 'height=987', strategy.info['image']
132
- assert_match 'http://graph.facebook.com/v3.0/321/picture?', strategy.info['image']
143
+ assert_match 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image']
133
144
  end
134
145
  end
135
146
 
@@ -138,6 +149,10 @@ class InfoTestOptionalDataPresent < StrategyTestCase
138
149
  super
139
150
  @raw_info ||= { 'name' => 'Fred Smith' }
140
151
  strategy.stubs(:raw_info).returns(@raw_info)
152
+
153
+ access_token = stub('OAuth2::AccessToken')
154
+ access_token.stubs(:token).returns('test_access_token')
155
+ strategy.stubs(:access_token).returns(access_token)
141
156
  end
142
157
 
143
158
  test 'returns the name' do
@@ -176,7 +191,7 @@ class InfoTestOptionalDataPresent < StrategyTestCase
176
191
 
177
192
  test 'returns the facebook avatar url' do
178
193
  @raw_info['id'] = '321'
179
- assert_equal 'http://graph.facebook.com/v3.0/321/picture', strategy.info['image']
194
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image']
180
195
  end
181
196
 
182
197
  test 'returns the Facebook link as the Facebook url' do
@@ -215,6 +230,10 @@ class InfoTestOptionalDataNotPresent < StrategyTestCase
215
230
  super
216
231
  @raw_info ||= { 'name' => 'Fred Smith' }
217
232
  strategy.stubs(:raw_info).returns(@raw_info)
233
+
234
+ access_token = stub('OAuth2::AccessToken')
235
+ access_token.stubs(:token).returns('test_access_token')
236
+ strategy.stubs(:access_token).returns(access_token)
218
237
  end
219
238
 
220
239
  test 'has no email key' do
@@ -258,7 +277,7 @@ class RawInfoTest < StrategyTestCase
258
277
  @options = {appsecret_proof: @appsecret_proof, fields: 'name,email'}
259
278
  end
260
279
 
261
- test 'performs a GET to https://graph.facebook.com/v3.0/me' do
280
+ test 'performs a GET to https://graph.facebook.com/v4.0/me' do
262
281
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
263
282
  strategy.stubs(:access_token).returns(@access_token)
264
283
  params = {params: @options}
@@ -266,7 +285,7 @@ class RawInfoTest < StrategyTestCase
266
285
  strategy.raw_info
267
286
  end
268
287
 
269
- test 'performs a GET to https://graph.facebook.com/v3.0/me with locale' do
288
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with locale' do
270
289
  @options.merge!({ locale: 'cs_CZ' })
271
290
  strategy.stubs(:access_token).returns(@access_token)
272
291
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
@@ -275,7 +294,7 @@ class RawInfoTest < StrategyTestCase
275
294
  strategy.raw_info
276
295
  end
277
296
 
278
- test 'performs a GET to https://graph.facebook.com/v3.0/me with info_fields' do
297
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with info_fields' do
279
298
  @options.merge!({info_fields: 'about'})
280
299
  strategy.stubs(:access_token).returns(@access_token)
281
300
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
@@ -284,7 +303,7 @@ class RawInfoTest < StrategyTestCase
284
303
  strategy.raw_info
285
304
  end
286
305
 
287
- test 'performs a GET to https://graph.facebook.com/v3.0/me with default info_fields' do
306
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with default info_fields' do
288
307
  strategy.stubs(:access_token).returns(@access_token)
289
308
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
290
309
  params = {params: {appsecret_proof: @appsecret_proof, fields: 'name,email'}}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-facebook
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Dodwell
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-27 00:00:00.000000000 Z
12
+ date: 2020-10-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: omniauth-oauth2
@@ -98,7 +98,7 @@ files:
98
98
  - test/signed_request_test.rb
99
99
  - test/strategy_test.rb
100
100
  - test/support/shared_examples.rb
101
- homepage: https://github.com/mkdynamic/omniauth-facebook
101
+ homepage: https://github.com/simi/omniauth-facebook
102
102
  licenses:
103
103
  - MIT
104
104
  metadata: {}
@@ -117,8 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  requirements: []
120
- rubyforge_project:
121
- rubygems_version: 2.7.6.2
120
+ rubygems_version: 3.2.0.pre1
122
121
  signing_key:
123
122
  specification_version: 4
124
123
  summary: Facebook OAuth2 Strategy for OmniAuth