From b05b0d0c30d6800e5acbbec03d8df8f14b7e7383 Mon Sep 17 00:00:00 2001 From: Nick Larson Date: Fri, 1 Dec 2017 10:26:55 -0800 Subject: [PATCH 1/2] dropbox APIv2 support --- lib/omniauth/strategies/dropbox_oauth2.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/omniauth/strategies/dropbox_oauth2.rb b/lib/omniauth/strategies/dropbox_oauth2.rb index f9d9b2d..07491a2 100644 --- a/lib/omniauth/strategies/dropbox_oauth2.rb +++ b/lib/omniauth/strategies/dropbox_oauth2.rb @@ -10,7 +10,7 @@ class DropboxOauth2 < OmniAuth::Strategies::OAuth2 :token_url => 'https://api.dropbox.com/oauth2/token' } - uid { raw_info['uid'] } + uid { raw_info['account_id'] } info do { @@ -25,7 +25,8 @@ class DropboxOauth2 < OmniAuth::Strategies::OAuth2 end def raw_info - conn = Faraday.new(:url => 'https://api.dropbox.com') do |faraday| + url = options[:client_options][:site] + conn = Faraday.new(url: url) do |faraday| faraday.request :url_encoded # form-encode POST params faraday.response :logger # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTP From 1584d44b078305a87b52ce09a8827b407d111dc0 Mon Sep 17 00:00:00 2001 From: Nick Larson Date: Fri, 1 Dec 2017 10:54:45 -0800 Subject: [PATCH 2/2] fix memoization of #raw_info --- lib/omniauth/strategies/dropbox_oauth2.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/omniauth/strategies/dropbox_oauth2.rb b/lib/omniauth/strategies/dropbox_oauth2.rb index 07491a2..dd17011 100644 --- a/lib/omniauth/strategies/dropbox_oauth2.rb +++ b/lib/omniauth/strategies/dropbox_oauth2.rb @@ -25,6 +25,8 @@ class DropboxOauth2 < OmniAuth::Strategies::OAuth2 end def raw_info + return @raw_info if defined?(@raw_info) + url = options[:client_options][:site] conn = Faraday.new(url: url) do |faraday| faraday.request :url_encoded # form-encode POST params @@ -37,8 +39,8 @@ def raw_info req.headers['Authorization'] = "Bearer #{access_token.token}" req.body = "null" end - @raw_info ||= MultiJson.decode(response.body) - # @raw_info ||= MultiJson.decode(access_token.get('/2/users/get_current_account').body) + + @raw_info = MultiJson.decode(response.body) end def callback_url