From 36f8c39c8633cf5097401b2785c424cf0e6aea71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= <37658566+mstr03@users.noreply.github.com> Date: Mon, 25 Oct 2021 18:49:37 +0200 Subject: [PATCH] Bump Facebook Graph API to v5.0 (#366) * Add DEFAULT_FACEBOOK_API_VERSION constant --- CHANGELOG.md | 6 ++++++ README.md | 2 +- lib/omniauth/facebook/version.rb | 2 +- lib/omniauth/strategies/facebook.rb | 5 +++-- test/helper.rb | 2 ++ test/strategy_test.rb | 26 +++++++++++++------------- 6 files changed, 26 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3e5a2f..fca18b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 9.0.0 (2021-10-25) + +Changes: + + - bumped version of FB Graph API to v5.0 + ## 8.0.0 (2020-10-20) Changes: diff --git a/README.md b/README.md index 22da202..04bd573 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ end ### API Version -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): +OmniAuth Facebook uses versioned API endpoints by default (current v5.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): ```ruby use OmniAuth::Builder do diff --git a/lib/omniauth/facebook/version.rb b/lib/omniauth/facebook/version.rb index 09d2fae..2575cf1 100644 --- a/lib/omniauth/facebook/version.rb +++ b/lib/omniauth/facebook/version.rb @@ -1,5 +1,5 @@ module OmniAuth module Facebook - VERSION = '8.0.0' + VERSION = '9.0.0' end end diff --git a/lib/omniauth/strategies/facebook.rb b/lib/omniauth/strategies/facebook.rb index bb0a007..89e8907 100644 --- a/lib/omniauth/strategies/facebook.rb +++ b/lib/omniauth/strategies/facebook.rb @@ -10,10 +10,11 @@ class Facebook < OmniAuth::Strategies::OAuth2 class NoAuthorizationCodeError < StandardError; end DEFAULT_SCOPE = 'email' + DEFAULT_FACEBOOK_API_VERSION = 'v5.0'.freeze option :client_options, { - site: 'https://graph.facebook.com/v4.0', - authorize_url: "https://www.facebook.com/v4.0/dialog/oauth", + site: "https://graph.facebook.com/#{DEFAULT_FACEBOOK_API_VERSION}", + authorize_url: "https://www.facebook.com/#{DEFAULT_FACEBOOK_API_VERSION}/dialog/oauth", token_url: 'oauth/access_token' } diff --git a/test/helper.rb b/test/helper.rb index dd8b241..1fdeba5 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -42,6 +42,8 @@ def setup @client_id = '123' @client_secret = '53cr3tz' @options = {} + + @facebook_api_version = OmniAuth::Strategies::Facebook::DEFAULT_FACEBOOK_API_VERSION end def strategy diff --git a/test/strategy_test.rb b/test/strategy_test.rb index 15d1110..dae8544 100644 --- a/test/strategy_test.rb +++ b/test/strategy_test.rb @@ -9,11 +9,11 @@ class StrategyTest < StrategyTestCase class ClientTest < StrategyTestCase test 'has correct Facebook site' do - assert_equal 'https://graph.facebook.com/v4.0', strategy.client.site + assert_equal "https://graph.facebook.com/#{@facebook_api_version}", strategy.client.site end test 'has correct authorize url' do - assert_equal 'https://www.facebook.com/v4.0/dialog/oauth', strategy.client.options[:authorize_url] + assert_equal "https://www.facebook.com/#{@facebook_api_version}/dialog/oauth", strategy.client.options[:authorize_url] end test 'has correct token url with versioning' do @@ -106,7 +106,7 @@ def setup raw_info = { 'name' => 'Fred Smith', 'id' => '321' } strategy.stubs(:raw_info).returns(raw_info) strategy.stubs(:access_token).returns(@access_token) - assert_equal 'https://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image'] + assert_equal "https://graph.facebook.com/#{@facebook_api_version}/321/picture?access_token=test_access_token", strategy.info['image'] end test 'returns the non-ssl facebook avatar url when `secure_image_url` option is set to false' do @@ -114,14 +114,14 @@ def setup raw_info = { 'name' => 'Fred Smith', 'id' => '321' } strategy.stubs(:raw_info).returns(raw_info) strategy.stubs(:access_token).returns(@access_token) - assert_equal 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image'] + assert_equal "http://graph.facebook.com/#{@facebook_api_version}/321/picture?access_token=test_access_token", strategy.info['image'] end test 'returns the secure facebook avatar url when `secure_image_url` option is omitted' do raw_info = { 'name' => 'Fred Smith', 'id' => '321' } strategy.stubs(:raw_info).returns(raw_info) strategy.stubs(:access_token).returns(@access_token) - assert_equal 'https://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image'] + assert_equal "https://graph.facebook.com/#{@facebook_api_version}/321/picture?access_token=test_access_token", strategy.info['image'] end test 'returns the image_url based of the client site' do @@ -137,7 +137,7 @@ def setup raw_info = { 'name' => 'Fred Smith', 'id' => '321' } strategy.stubs(:raw_info).returns(raw_info) strategy.stubs(:access_token).returns(@access_token) - assert_equal 'https://graph.facebook.com/v4.0/321/picture?access_token=test_access_token&type=normal', strategy.info['image'] + assert_equal "https://graph.facebook.com/#{@facebook_api_version}/321/picture?access_token=test_access_token&type=normal", strategy.info['image'] end test 'returns the image with size specified as a symbol in the `image_size` option' do @@ -145,7 +145,7 @@ def setup raw_info = { 'name' => 'Fred Smith', 'id' => '321' } strategy.stubs(:raw_info).returns(raw_info) strategy.stubs(:access_token).returns(@access_token) - assert_equal 'https://graph.facebook.com/v4.0/321/picture?access_token=test_access_token&type=normal', strategy.info['image'] + assert_equal "https://graph.facebook.com/#{@facebook_api_version}/321/picture?access_token=test_access_token&type=normal", strategy.info['image'] end test 'returns the image with width and height specified in the `image_size` option' do @@ -155,7 +155,7 @@ def setup strategy.stubs(:access_token).returns(@access_token) assert_match 'width=123', strategy.info['image'] assert_match 'height=987', strategy.info['image'] - assert_match 'https://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image'] + assert_match "https://graph.facebook.com/#{@facebook_api_version}/321/picture?access_token=test_access_token", strategy.info['image'] end end @@ -206,7 +206,7 @@ def setup test 'returns the facebook avatar url' do @raw_info['id'] = '321' - assert_equal 'https://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image'] + assert_equal "https://graph.facebook.com/#{@facebook_api_version}/321/picture?access_token=test_access_token", strategy.info['image'] end test 'returns the Facebook link as the Facebook url' do @@ -292,7 +292,7 @@ def setup @options = {appsecret_proof: @appsecret_proof, fields: 'name,email'} end - test 'performs a GET to https://graph.facebook.com/v4.0/me' do + test "performs a GET to https://graph.facebook.com/#{@facebook_api_version}/me" do strategy.stubs(:appsecret_proof).returns(@appsecret_proof) strategy.stubs(:access_token).returns(@access_token) params = {params: @options} @@ -300,7 +300,7 @@ def setup strategy.raw_info end - test 'performs a GET to https://graph.facebook.com/v4.0/me with locale' do + test "performs a GET to https://graph.facebook.com/#{@facebook_api_version}/me with locale" do @options.merge!({ locale: 'cs_CZ' }) strategy.stubs(:access_token).returns(@access_token) strategy.stubs(:appsecret_proof).returns(@appsecret_proof) @@ -309,7 +309,7 @@ def setup strategy.raw_info end - test 'performs a GET to https://graph.facebook.com/v4.0/me with info_fields' do + test "performs a GET to https://graph.facebook.com/#{@facebook_api_version}/me with info_fields" do @options.merge!({info_fields: 'about'}) strategy.stubs(:access_token).returns(@access_token) strategy.stubs(:appsecret_proof).returns(@appsecret_proof) @@ -318,7 +318,7 @@ def setup strategy.raw_info end - test 'performs a GET to https://graph.facebook.com/v4.0/me with default info_fields' do + test "performs a GET to https://graph.facebook.com/#{@facebook_api_version}/me with default info_fields" do strategy.stubs(:access_token).returns(@access_token) strategy.stubs(:appsecret_proof).returns(@appsecret_proof) params = {params: {appsecret_proof: @appsecret_proof, fields: 'name,email'}}