Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  2. def facebook
  3.  
  4. @user = User.from_omniauth(request.env["omniauth.auth"])
  5.  
  6. if @user.persisted?
  7. byebug
  8. sign_in_and_redirect @user, :event => :authentication
  9. set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
  10. else
  11. session["devise.facebook_data"] = request.env["omniauth.auth"]
  12. redirect_to new_user_registration_url
  13. end
  14. end
  15. def failure
  16. redirect_to root_path
  17. end
  18. end
  19.  
  20. devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
  21.  
  22. Devise.setup do |config|
  23. config.omniauth :facebook, ENV['APP_ID'], ENV['APP_SECRET'],
  24. callback_url: ENV['CALLBACK_URL'],
  25. scope: 'email
  26.  
  27. user.rb
  28. devise :database_authenticatable, :registerable,
  29. :recoverable, :rememberable, :trackable, :validatable
  30. devise :omniauthable, :omniauth_providers => [:facebook]
  31.  
  32. def self.from_omniauth(auth)
  33. where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
  34. user.email = auth.info.email
  35. user.password = Devise.friendly_token[0,20]
  36. end
  37. end
  38.  
  39. def self.new_with_session(params, session)
  40. super.tap do |user|
  41. if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"]
  42. user.email = data["email"] if user.email.blank?
  43. end
  44. end
  45. end
  46. def self.find_for_facebook_oauth(access_token)
  47. if user = User.where(:url => access_token.info.urls.Facebook).first
  48. user
  49. else
  50. User.create!(:provider => access_token.provider, :url => access_token.info.urls.Facebook, :username => access_token.extra.raw_info.name, :nickname => access_token.extra.raw_info.username, :email => access_token.extra.raw_info.email, :password => Devise.friendly_token[0,20])
  51. end
  52. end
  53.  
  54. Rails.application.config.middleware.use OmniAuth::Builder do
  55. provider :facebook, ENV['APP_ID'], ENV['APP_SECRET']
  56. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement