module FaceRecognition::OmniAuth
Public Class Methods
extend_fb_token(id, column_name)
click to toggle source
# File lib/face_recognition/models/omni_auth.rb, line 63 def self.extend_fb_token(id, column_name) user = FacebookUser.where(id: id).first return unless user fb_auth = FbGraph2::Auth.new(ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']) fb_auth.fb_exchange_token=(user.facebook_token) user.facebook_token = fb_auth.access_token!.access_token user.save end
from_omniauth(auth)
click to toggle source
Take the auth hash from the Omniauth callback and create / update the user
# File lib/face_recognition/models/omni_auth.rb, line 8 def self.from_omniauth(auth) # Find or create the user user = nil if FacebookUser.exists?("#{self.table_name}.#{self.facebook_id_column}" => auth.id) user = FacebookUser.where("#{self.table_name}.#{self.facebook_id_column} =?", auth.id).first else user = FacebookUser.new end # Assign the Facebook ID. because we are calling the SQL in the first_or_create it doesn't update that column user[self.facebook_id_column.to_sym] = auth.id # Dynamically try and set the users name, no matter how they have it set up user.first_name = auth.first_name if user.respond_to? :first_name= user.last_name = auth.last_name if user.respond_to? :last_name= user.name = auth.name if user.respond_to? :name= user.full_name = auth.name if user.respond_to? :full_name= user.display_name = auth.name if user.respond_to? :display_name= # Set their token and provider user.oauth_token = auth.access_token if user.respond_to? :oauth_token= user.omniauth_token = auth.access_token if user.respond_to? :omniauth_token= user.facebook_token = auth.access_token if user.respond_to? :facebook_token= user.fb_access_token = auth.access_token if user.respond_to? :fb_access_token= user.provider = 'facebook' if user.respond_to? :provider= # User images user.profile_image_url = "http://graph.facebook.com/#{auth.id}/picture?type=large" if user.respond_to? :profile_image_url= user.profile_photo_url = "http://graph.facebook.com/#{auth.id}/picture?type=large" if user.respond_to? :profile_photo_url= user.cover_image_url = auth.try(:cover) if user.respond_to? :cover_image_url= user.cover_photo_url = auth.try(:cover) if user.respond_to? :cover_photo_url= user.image_url = "http://graph.facebook.com/#{auth.id}/picture?type=large" if user.respond_to? :image_url= user.photo_url = "http://graph.facebook.com/#{auth.id}/picture?type=large" if user.respond_to? :photo_url= user.avatar_url = "http://graph.facebook.com/#{auth.id}/picture?type=large" if user.respond_to? :avatar_url= user.remote_image_url = "http://graph.facebook.com/#{auth.id}/picture?type=large" if user.respond_to? :remote_image_url= user.remote_avatar_url = "http://graph.facebook.com/#{auth.id}/picture?type=large" if user.respond_to? :remote_avatar_url= # Regular Devise columns set user.email = auth.email || '' user.password = Devise.friendly_token[0, 20] # Extra Info that we can grab user.birthday = auth.raw_attributes.birthday if user.respond_to? :birthday= user.date_of_birth = auth.raw_attributes.birthday if user.respond_to? :date_of_birth= user.dob = auth.raw_attributes.birthday if user.respond_to? :dob= user.d_o_b = auth.raw_attributes.try(:birthday) if user.respond_to? :d_o_b= user.gender = auth.try(:gender) if user.respond_to? :gender= user.save # Extend the Users facebook token so that it does not expire user.extend_fb_token(facebook_id_column) user end
Public Instance Methods
extend_fb_token(column_name)
click to toggle source
# File lib/face_recognition/models/omni_auth.rb, line 72 def extend_fb_token(column_name) self.class.delay.extend_fb_token(self.id, column_name) end