Class: Challah::Facebook::Provider

Inherits:
Object
  • Object
show all
Defined in:
lib/challah/facebook/provider.rb

Class Method Summary collapse

Class Method Details

.save(record) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/challah/facebook/provider.rb', line 4

def self.save(record)
  set({
    user_id:  record.id,
    token:    record.facebook_provider.fetch(:token),
    uid:      record.facebook_provider.fetch(:uid)
  })
end

.set(options = {}) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/challah/facebook/provider.rb', line 12

def self.set(options = {})
  user_id     = options.fetch(:user_id)
  uid         = options.fetch(:uid, '')
  token       = options.fetch(:token, '')

  ::Authorization.set({
    provider:   :facebook,
    user_id:    user_id,
    uid:        uid,
    token:      token
  })
end

.valid?(user) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/challah/facebook/provider.rb', line 25

def self.valid?(user)
  return false unless user.facebook_provider?

  uid = user.facebook_provider.fetch(:uid).to_s.strip
  token = user.facebook_provider.fetch(:token)

  # Both a fb_uid and access token are required
  if uid.present? and token.present?
    if ::Authorization.where(provider: 'facebook', uid: uid).count > 0
      user.errors.add :facebook, 'account has already been used'
      return false
    end

    begin
      # Get extended token
      extended_token = Interface.get_extended_token(token)
      user.facebook_provider[:token] = extended_token

      # Verify UID
      test_uid = Interface.get_facebook_uid_from_access_token(extended_token)

      # If the uid's match up, this is a valid token
      return test_uid == uid
    rescue
      return false
    end

    true
  else
    false
  end
end