Skip to content
This repository was archived by the owner on Apr 15, 2020. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 5 additions & 44 deletions app/controllers/devise/facebook_consumer_controller.rb
Original file line number Diff line number Diff line change
@@ -1,49 +1,10 @@
class Devise::FacebookConsumerController < ApplicationController
include Devise::Controllers::InternalHelpers
include DeviseOauth2Facebook::FacebookConsumerHelper

def auth
url = send("#{resource_name}_fb_callback_url".to_sym)
redirect_to facebook_client.authorization.authorize_url(:redirect_uri => url , :scope => Devise.facebook_permissions)
end

def callback
# if resource_class.respond_to?(:serialize_into_cookie)
# User.first.remember_me!
# cookies.signed["remember_#{resource_name}_token"] = {
# :value => User.first.class.serialize_into_cookie(User.first),
# :expires => User.first.remember_expires_at,
# :path => "/"
# }
# end
# sign_in_and_redirect(resource_name, User.first)
# set_flash_message :notice, :signed_in
# return
url = send("#{resource_name}_fb_callback_url".to_sym)

client = facebook_client
client.authorization.process_callback(params[:code], :redirect_uri => url)

token = client.access_token
fb_user = client.selection.me.info!
include DeviseOauth2Facebook::ControllerMethods

# Rails.logger.info "FB USER:"
# Rails.logger.info fb_user.inspect

resource = resource_class.find_with_facebook_user(fb_user, token)
unless resource
resource = resource_class.create_with_facebook_user(fb_user, token)
end
if resource_class.respond_to?(:serialize_into_cookie)
resource.remember_me!
cookies.signed["remember_#{resource_name}_token"] = {
:value => resource.class.serialize_into_cookie(resource),
:expires => resource.remember_expires_at,
:path => "/"
}
end
set_flash_message :notice, :signed_in
sign_in_and_redirect(resource_name, resource)
def initialize
# For some reason callback is not recognized as action_method automagically
action_methods.add "callback"
end

end
end
20 changes: 11 additions & 9 deletions devise_oauth2_facebook.gemspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Generated by jeweler
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
# -*- encoding: utf-8 -*-

Gem::Specification.new do |s|
Expand All @@ -9,22 +9,24 @@ Gem::Specification.new do |s|

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Mooktakim Ahmed"]
s.date = %q{2011-02-12}
s.date = %q{2011-03-19}
s.email = %q{[email protected]}
s.extra_rdoc_files = [
"README"
]
s.files = [
"README",
"app/controllers/devise/facebook_consumer_controller.rb",
"config/locales/en.yml",
"lib/devise_oauth2_facebook.rb",
"lib/devise_oauth2_facebook/engine.rb",
"lib/devise_oauth2_facebook/facebook_consumer_helper.rb",
"lib/devise_oauth2_facebook/model.rb",
"lib/devise_oauth2_facebook/routes.rb"
"app/controllers/devise/facebook_consumer_controller.rb",
"config/locales/en.yml",
"lib/devise_oauth2_facebook.rb",
"lib/devise_oauth2_facebook/engine.rb",
"lib/devise_oauth2_facebook/facebook_consumer_controller_methods.rb",
"lib/devise_oauth2_facebook/facebook_consumer_helper.rb",
"lib/devise_oauth2_facebook/model.rb",
"lib/devise_oauth2_facebook/routes.rb"
]
s.homepage = %q{http://github.com/mooktakim/devise_oauth2_facebook}
s.rdoc_options = ["--charset=UTF-8"]
s.require_paths = ["lib"]
s.rubygems_version = %q{1.3.7}
s.summary = %q{Devise OAuth2 Facebook extension}
Expand Down
9 changes: 5 additions & 4 deletions lib/devise_oauth2_facebook.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
require 'fbgraph'

require 'devise_oauth2_facebook/engine'
require 'devise_oauth2_facebook/facebook_consumer_controller_methods.rb'

module Devise
mattr_accessor :facebook_uid_field
Expand All @@ -15,18 +16,18 @@ module Devise

mattr_accessor :facebook_api_secret
@@facebook_api_secret = nil

mattr_accessor :facebook_permissions
@@facebook_permissions = 'offline_access,email'

mattr_accessor :facebook_callback_url
@@facebook_callback_url = nil

end

Devise.add_module(:devise_oauth2_facebook,
:strategy => false,
:controller => :facebook_consumer,
:route => :facebook_consumer,
:model => 'devise_oauth2_facebook/model'
)
)
47 changes: 47 additions & 0 deletions lib/devise_oauth2_facebook/facebook_consumer_controller_methods.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
module DeviseOauth2Facebook
module ControllerMethods
def auth
url = send("#{resource_name}_fb_callback_url".to_sym)
redirect_to facebook_client.authorization.authorize_url(:redirect_uri => url , :scope => Devise.facebook_permissions)
end

def callback
# if resource_class.respond_to?(:serialize_into_cookie)
# User.first.remember_me!
# cookies.signed["remember_#{resource_name}_token"] = {
# :value => User.first.class.serialize_into_cookie(User.first),
# :expires => User.first.remember_expires_at,
# :path => "/"
# }
# end
# sign_in_and_redirect(resource_name, User.first)
# set_flash_message :notice, :signed_in
# return
url = send("#{resource_name}_fb_callback_url".to_sym)

client = facebook_client
client.authorization.process_callback(params[:code], :redirect_uri => url)

token = client.access_token
fb_user = client.selection.me.info!

# Rails.logger.info "FB USER:"
# Rails.logger.info fb_user.inspect

resource = resource_class.find_with_facebook_user(fb_user, token)
unless resource
resource = resource_class.create_with_facebook_user(fb_user, token)
end
if resource_class.respond_to?(:serialize_into_cookie)
resource.remember_me!
cookies.signed["remember_#{resource_name}_token"] = {
:value => resource.class.serialize_into_cookie(resource),
:expires => resource.remember_expires_at,
:path => "/"
}
end
set_flash_message :notice, :signed_in
sign_in_and_redirect(resource_name, resource)
end
end
end