class OmniAuth::Strategies::GoogleOauth2
Constants
- BASE_SCOPES
- BASE_SCOPE_URL
- DEFAULT_SCOPE
Public Instance Methods
custom_build_access_token()
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 94 def custom_build_access_token access_token = if request.xhr? && request.params['code'] verifier = request.params['code'] client.auth_code.get_token(verifier, get_token_options('postmessage'), deep_symbolize(options.auth_token_params || {})) elsif request.params['code'] && request.params['redirect_uri'] verifier = request.params['code'] redirect_uri = request.params['redirect_uri'] client.auth_code.get_token(verifier, get_token_options(redirect_uri), deep_symbolize(options.auth_token_params || {})) elsif verify_token(request.params['access_token']) ::OAuth2::AccessToken.from_hash(client, request.params.dup) else verifier = request.params["code"] client.auth_code.get_token(verifier, get_token_options(callback_url), deep_symbolize(options.auth_token_params)) end verify_hd(access_token) access_token end
Also aliased as: build_access_token
raw_friend_info(id)
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 86 def raw_friend_info(id) @raw_friend_info ||= access_token.get("https://www.googleapis.com/plus/v1/people/#{id}/people/visible").parsed end
raw_image_info(id)
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 90 def raw_image_info(id) @raw_image_info ||= access_token.get("https://www.googleapis.com/plus/v1/people/#{id}?fields=image").parsed end
raw_info()
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 82 def raw_info @raw_info ||= access_token.get('https://www.googleapis.com/plus/v1/people/me/openIdConnect').parsed end
Private Instance Methods
callback_url()
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 117 def callback_url options[:redirect_uri] || (full_host + script_name + callback_path) end
get_token_options(redirect_uri)
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 121 def get_token_options(redirect_uri) { :redirect_uri => redirect_uri }.merge(token_params.to_hash(:symbolize_keys => true)) end
image_params()
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 157 def image_params image_params = [] if options[:image_size].is_a?(Integer) image_params << "s#{options[:image_size]}" elsif options[:image_size].is_a?(Hash) image_params << "w#{options[:image_size][:width]}" if options[:image_size][:width] image_params << "h#{options[:image_size][:height]}" if options[:image_size][:height] end image_params << 'c' if options[:image_aspect_ratio] == 'square' '/' + image_params.join('-') end
image_size_opts_passed?()
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 153 def image_size_opts_passed? !!(options[:image_size] || options[:image_aspect_ratio]) end
image_url()
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 136 def image_url return nil unless raw_info['picture'] u = URI.parse(raw_info['picture'].gsub('https:https', 'https')) path_index = u.path.to_s.index('/photo.jpg') if path_index && image_size_opts_passed? u.path.insert(path_index, image_params) u.path = u.path.gsub('//', '/') end u.query = strip_unnecessary_query_parameters(u.query) u.to_s end
prune!(hash)
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 125 def prune!(hash) hash.delete_if do |_, v| prune!(v) if v.is_a?(Hash) v.nil? || (v.respond_to?(:empty?) && v.empty?) end end
strip_unnecessary_query_parameters(query_parameters)
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 170 def strip_unnecessary_query_parameters(query_parameters) # strip `sz` parameter (defaults to sz=50) which overrides `image_size` options return nil if query_parameters.nil? params = CGI.parse(query_parameters) stripped_params = params.delete_if { |key| key == "sz" } # don't return an empty Hash since that would result # in URLs with a trailing ? character: http://image.url? return nil if stripped_params.empty? URI.encode_www_form(stripped_params) end
verified_email()
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 132 def verified_email raw_info['email_verified'] ? raw_info['email'] : nil end
verify_hd(access_token)
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 191 def verify_hd(access_token) return true unless options.hd @raw_info ||= access_token.get('https://www.googleapis.com/plus/v1/people/me/openIdConnect').parsed allowed_hosted_domains = Array(options.hd) raise CallbackError.new(:invalid_hd, "Invalid Hosted Domain") unless allowed_hosted_domains.include? @raw_info['hd'] true end
verify_token(access_token)
click to toggle source
# File lib/omniauth/strategies/google_oauth2.rb, line 184 def verify_token(access_token) return false unless access_token raw_response = client.request(:get, 'https://www.googleapis.com/oauth2/v3/tokeninfo', params: { access_token: access_token }).parsed raw_response['aud'] == options.client_id end