class Auth
Public Instance Methods
first_name()
click to toggle source
# File lib/generators/authkit/templates/app/models/auth.rb, line 8 def first_name self.parsed_env["info"]["first_name"] rescue nil end
formatted_provider()
click to toggle source
# File lib/generators/authkit/templates/app/models/auth.rb, line 71 def formatted_provider <% providers.each do |provider| %> return "<%= formatted_providers[provider] %>
full_name()
click to toggle source
# File lib/generators/authkit/templates/app/models/auth.rb, line 4 def full_name self.parsed_env["info"]["name"] rescue formatted_provider end
image_url()
click to toggle source
# File lib/generators/authkit/templates/app/models/auth.rb, line 16 def image_url if <%= (providers - [:tumblr]).map{|p| "#{p}?"}.join(" || ") %> self.parsed_env["info"]["image"] rescue nil <% if provider?(:tumblr) %>elsif tumblr? self.parsed_env["info"]["avatar"] rescue nil<% end %> end end def username <% if provider?(:google) %># Google does not provide a username<% end %> self.parsed_env["info"]["nickname"] rescue nil end def expired? self.token_expires_at && self.token_expires_at < Time.now end <% providers.each do |provider| %> def <%= provider %>? provider == "<%= provider %>" end <% end %> def refresh! return if refresh_token.blank? <% if provider?(:google) %>refresh_google if google?<% end%> save! end protected <% if provider?(:google) %> # https://github.com/intridea/omniauth-oauth2/issues/40#issuecomment-21275075 def refresh_google conn = Faraday.new('https://accounts.google.com') do |faraday| faraday.request :url_encoded faraday.response :json faraday.response :raise_error faraday.response :logger unless Rails.env.production? faraday.adapter Faraday.default_adapter end response = conn.post('/o/oauth2/token', { grant_type: 'refresh_token', refresh_token: refresh_token, client_id: ENV['google_api_client_id'], client_secret: ENV['google_api_client_secret'] }) body = response.body self.token = body['access_token'] if body['access_token'] self.token_expires_at = Time.now.utc + body['expires_in'].to_i.seconds end <% end %> def formatted_provider <% providers.each do |provider|
last_name()
click to toggle source
# File lib/generators/authkit/templates/app/models/auth.rb, line 12 def last_name self.parsed_env["info"]["last_name"] rescue nil end
refresh!()
click to toggle source
# File lib/generators/authkit/templates/app/models/auth.rb, line 39 def refresh! return if refresh_token.blank? <% if provider?(:google) %>refresh_google if google?<% end%> save! end
refresh_google()
click to toggle source
github.com/intridea/omniauth-oauth2/issues/40#issuecomment-21275075
# File lib/generators/authkit/templates/app/models/auth.rb, line 49 def refresh_google conn = Faraday.new('https://accounts.google.com') do |faraday| faraday.request :url_encoded faraday.response :json faraday.response :raise_error faraday.response :logger unless Rails.env.production? faraday.adapter Faraday.default_adapter end response = conn.post('/o/oauth2/token', { grant_type: 'refresh_token', refresh_token: refresh_token, client_id: ENV['google_api_client_id'], client_secret: ENV['google_api_client_secret'] }) body = response.body self.token = body['access_token'] if body['access_token'] self.token_expires_at = Time.now.utc + body['expires_in'].to_i.seconds end