Module: PlataformaSocial::Facebook

Included in:
ActionController::Base
Defined in:
lib/plataforma_social/facebook.rb

Instance Method Summary collapse

Instance Method Details

#facebook_loginObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/plataforma_social/facebook.rb', line 5

def 
  load_oauth
  load_graph
  
  redirect = false
  
  if params[:code]
    begin
      @oauth.get_access_token(params[:code])
    rescue Koala::Facebook::OAuthTokenRequestError
      redirect = true if parse_facebook_signed_request && !parse_facebook_signed_request['oauth_token']
    end
  else
    redirect = true if parse_facebook_signed_request && !parse_facebook_signed_request['oauth_token']
  end
  
  if parse_facebook_signed_request && parse_facebook_signed_request['oauth_token']
    if !session[:not_verify_facebook_permissions] === true
      permissions = @graph.get_object('me', :fields => 'permissions')['permissions']['data'][0]
      session[:not_verify_facebook_permissions] = true
    
      PlataformaSocial.facebook_scope.split(',').each do |permission|
        redirect = true unless permissions[permission.strip]
      end
    end
  end
  
  render :text => %|<script type="text/javascript">window.top.location.href="#{@oauth.url_for_oauth_code(:permissions => PlataformaSocial.configuration.facebook_scope)}";</script>| if redirect
end

#facebook_user_dataObject



53
54
55
56
57
# File 'lib/plataforma_social/facebook.rb', line 53

def facebook_user_data
  if load_graph
    @graph.get_object('me')
  end
end

#load_graphObject



68
69
70
# File 'lib/plataforma_social/facebook.rb', line 68

def load_graph
  @graph = Koala::Facebook::API.new parse_facebook_signed_request['oauth_token'] if parse_facebook_signed_request.present? && parse_facebook_signed_request['oauth_token']
end

#load_oauthObject



64
65
66
# File 'lib/plataforma_social/facebook.rb', line 64

def load_oauth
  @oauth = Koala::Facebook::OAuth.new(PlataformaSocial.facebook_app_id, PlataformaSocial.facebook_app_secret, PlataformaSocial.facebook_callback_url)
end

#load_user_dataObject



35
36
37
38
39
40
# File 'lib/plataforma_social/facebook.rb', line 35

def load_user_data
  facebook_data          = facebook_user_data.symbolize_keys if facebook_user_data
  plataforma_social_data = plataforma_social_user_data.try(:symbolize_keys)
  
  @user_data = { :facebook => facebook_data, :plataforma_social => plataforma_social_data }
end

#parse_facebook_signed_requestObject



59
60
61
62
# File 'lib/plataforma_social/facebook.rb', line 59

def parse_facebook_signed_request
  load_oauth
  @oauth.parse_signed_request params[:signed_request] if params[:signed_request].present?
end

#plataforma_social_user_dataObject



42
43
44
45
46
47
48
49
50
51
# File 'lib/plataforma_social/facebook.rb', line 42

def plataforma_social_user_data
  if params[:signed_request]
    response = Request.post("#{PlataformaSocial.domains('login')}/register", { :signed_request => params[:signed_request], :social_ref => params[:social_ref] })
    
    data = {}
    data[:reference] = response['id'] if response.present? && response['id']
    
    data
  end
end