Sha256: 515c17657e0702c835ef9c782c25284b4cced9641f66146b47993a259a7ac0c2

Contents?: true

Size: 1.61 KB

Versions: 3

Compression:

Stored size: 1.61 KB

Contents

module Authorizme
  module Login
    class FacebookController < AuthorizmeController
      before_filter :set_facebook, :only => [:auth, :callback, :canvas]

      def auth
        callback_url = params[:callback_url] || redirect_uri("facebook")        
        if params[:canvas]
          @authorize_url = @facebook.get_dialog_authorize_url callback_url, Authorizme::facebook_perms
        else
          redirect_to @facebook.get_popup_authorize_url callback_url, Authorizme::facebook_perms
        end
      end

      def callback
        if params[:signed_request]
          @facebook.authorize_with_signed_request params[:signed_request]
          authorize_user @facebook
          redirect_to Authorizme::after_login_path
        elsif params[:code]
          @facebook.authorize_with_code params[:code], redirect_uri("facebook")
          authorize_user @facebook
          render_popup_view
        else
          redirect_to Authorizme::after_login_path
        end
      end
      
      private

        def set_facebook
          options = {client_id: Authorizme::facebook_client_id, client_secret: Authorizme::facebook_client_secret}
          @facebook = Authorizme::Provider::Facebook.new(options)
        end

        def authorize_user facebook
          fb_user = facebook.get_user
          if fb_user[:email]
            user = User.find_by_email(fb_user[:email])
            if user
              fb_user.delete(:email)
            end
          end
          user = User.authenticate_with_facebook(facebook.get_user_json.id, fb_user, facebook.get_access_token) 
          login user
          user
        end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
authorizme-1.1.1 app/controllers/authorizme/login/facebook_controller.rb
authorizme-1.1.0 app/controllers/authorizme/login/facebook_controller.rb
authorizme-1.0.0 app/controllers/authorizme/login/facebook_controller.rb