Class: RubyApp::Elements::Mobile::Documents::Authentication::Facebook::AuthenticationDocument

Inherits:
RubyApp::Elements::Mobile::Document show all
Defined in:
lib/ruby_app/elements/mobile/documents/authentication/facebook/authentication_document.rb

Direct Known Subclasses

EmailAuthenticationDocument

Instance Attribute Summary

Attributes inherited from RubyApp::Elements::Mobile::Document

#links, #metadata, #pages, #scripts, #stylesheets

Attributes inherited from RubyApp::Element

#attributes

Instance Method Summary collapse

Methods inherited from RubyApp::Elements::Mobile::Document

#page

Methods inherited from RubyApp::Element

#element_id, get_element

Methods included from Mixins::ConfigurationMixin

#configuration

Methods included from Mixins::TranslateMixin

#localize, #translate

Methods included from Mixins::TemplateMixin

#exclude_parent_template, #exclude_parent_template?, #get_cache, #get_default_template, #get_template, #get_template_name, #get_templates, #template_path

Methods included from Mixins::RenderMixin

#content_for, #get_cache, #get_default_template, #get_templates, #render

Constructor Details

#initialize(permissions) ⇒ AuthenticationDocument

Returns a new instance of AuthenticationDocument.



24
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
# File 'lib/ruby_app/elements/mobile/documents/authentication/facebook/authentication_document.rb', line 24

def initialize(permissions)
  super()

  self.loaded do |element, event|

    unless @authentication
      @authentication = ::Koala::Facebook::OAuth.new(ENV['FACEBOOK_ACCESS_KEY'] || RubyApp::Elements::Mobile::Documents::Authentication::Facebook::AuthenticationDocument.configuration.access_key,
                                                     ENV['FACEBOOK_SECRET_KEY'] || RubyApp::Elements::Mobile::Documents::Authentication::Facebook::AuthenticationDocument.configuration.secret_key,
                                                     RubyApp::Request.url)
      url = @authentication.url_for_oauth_code(:display => 'touch',
                                               :permissions => permissions)
      RubyApp::Log.debug("FACEBOOK  --> #{url.inspect}")
      event.go(url)
    else
      RubyApp::Log.debug("FACEBOOK  <-- #{RubyApp::Request.url.inspect}")
      code = RubyApp::Request.query['code']
      token = @authentication.get_access_token(code)
      RubyApp::Log.debug("FACEBOOK  token=#{token.inspect}")
      graph = ::Koala::Facebook::API.new(token)
      me = graph.get_object('me')
      RubyApp::Log.debug("FACEBOOK  me=#{me.inspect}")
      RubyApp::Session.identity = self.create_identity_from_me(me)
      RubyApp::Session.documents.pop
      event.go('/')
    end
  end

end

Instance Method Details

#create_identity_from_me(me) ⇒ Object



53
54
55
# File 'lib/ruby_app/elements/mobile/documents/authentication/facebook/authentication_document.rb', line 53

def create_identity_from_me(me)
  RubyApp::Session::Identity.new(me['email'])
end