lib/omniauth/strategies/mailchimp.rb in omniauth-mailchimp-1.0.3 vs lib/omniauth/strategies/mailchimp.rb in omniauth-mailchimp-1.2.0
- old
+ new
@@ -2,43 +2,60 @@
require 'multi_json'
module OmniAuth
module Strategies
class Mailchimp < OmniAuth::Strategies::OAuth2
-
+
option :name, "mailchimp"
-
+
option :client_options, {
:site => "https://login.mailchimp.com",
:authorize_url => '/oauth2/authorize',
:token_url => '/oauth2/token'
}
+ def request_phase
+ req = Rack::Request.new(@env)
+ options.update(req.params)
+ super
+ end
+
uid {
raw_info["user_id"]
}
info do
- {
- :first_name => raw_info["contact"]["fname"],
- :last_name => raw_info["contact"]["lname"],
- :email => raw_info["contact"]["email"]
+ contact = raw_info["contact"] || {}
+
+ {
+ :first_name => contact["fname"],
+ :last_name => contact["lname"],
+ :email => contact["email"]
}
end
-
- extra do
- {
+
+ extra do
+ {
:metadata => user_data,
- :raw_info => raw_info
+ :raw_info => raw_info,
+ :api_token_with_dc => "#{@access_token.token}-#{user_data['dc']}",
}
end
def raw_info
@raw_info ||= begin
data = user_data
endpoint = data["api_endpoint"]
apikey = "#{@access_token.token}-#{data['dc']}"
- @access_token.get("#{endpoint}/1.3/?method=getAccountDetails&apikey=#{apikey}").parsed
+ response = @access_token.get("#{endpoint}/2.0/helper/account-details?apikey=#{apikey}").parsed
+ if response["error"]
+ case response["code"]
+ when 109
+ fail!(:invalid_credentials, response["error"])
+ end
+ else
+ response
+ end
end
end
def user_data
@data ||= MultiJson.decode(@access_token.get("https://login.mailchimp.com/oauth2/metadata").body)