Module: Sociable::Profile::Facebook::Mongoid::ClassMethods

Defined in:
lib/sociable/model/facebook.rb

Instance Method Summary collapse

Instance Method Details

#find_for_facebook_oauth(access_token, ip) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/sociable/model/facebook.rb', line 21

def find_for_facebook_oauth(access_token, ip)
  data = access_token.info
  #credentials=access_token.credentials.merge(type: :facebook)
  users_criteria = self.any_of({ facebook_user_name: data.nickname }, { last_sign_in_ip: ip, name: data.name })
  if users_criteria.count > 0
    user = users_criteria.first
    user.credentials ||= {}
    user.credentials.merge!(facebook: access_token.credentials)
    user.profile_image_url ||= data.image
    user.update_attributes(facebook_user_name: data.nickname,
                           facebook_data: access_token.extra.raw_info,
                           facebook_image_url: data.image) unless (user.facebook_user_name)
    user.update_attribute(email: data.email) unless user.email
    user
  else
    user=self.create!(
        password: Devise.friendly_token[0,20],
        facebook_image_url: data.image,
        facebook_user_name: data.nickname,
        name: data.name,
        email: data.email,
        facebook_data: access_token.extra.raw_info,
    )
    user.save!
    user
  end
end