Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -----------------------User.rb-----------------------
- def self.find_for_twitter_oauth(auth, signed_in_resource=nil)
- user = User.where(:provider => auth.provider, :uid => auth.uid).first
- unless user
- user = User.create(name: auth.info.nickname,
- provider: auth.provider,
- uid: auth.uid,
- email: User.dummy_email(auth),
- password: Devise.friendly_token[0,20]
- )
- end
- user
- end
- def self.create_unique_string
- SecureRandom.uuid
- end
- # Create dummy email for OAuth
- def self.dummy_email(auth)
- "#{auth.uid}-#{auth.provider}@example.com"
- end
- class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
- def twitter
- # You need to implement the method below in your model
- @user = User.find_for_twitter_oauth(request.env["omniauth.auth"], current_user)
- if @user.persisted?
- set_flash_message(:notice, :success, :kind => "Twitter") if is_navigational_format?
- sign_in_and_redirect @user, :event => :authentication
- else
- session["devise.twitter_data"] = request.env["omniauth.auth"].except("extra")
- redirect_to new_user_registration_url
- end
- end
- end
- -------------------routes.rb---------------------------
- devise_for :users, controllers: {
- sessions: "users/sessions",
- registrations: "registrations",
- omniauth_callbacks: "users/omniauth_callbacks"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement