Wednesday 15 September 2010

ruby on rails - Devise + Twitter OmniAuth Get user Email -



ruby on rails - Devise + Twitter OmniAuth Get user Email -

i've been using devise + omniauth twitter authenticate user portal. facing 2 issues.

when user accessing /users/sign_up, form publicly visible. instead, want redirect him twitter authentication page.

when user accessing /users/sign_up, email form visible. i'm using form email address of users after signs twitter.

can please help me solve issue people accessing forms directly?

adding code snippets:

#config/routes.rb devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } devise_scope :user "skcript1625" => "devise/sessions#new", as: :login "logout", to: "devise/sessions#destroy", as: :logout end # app/models/user.rb devise :database_authenticatable, :registerable, :rememberable, :trackable, :validatable def self.from_omniauth(auth) where(provider: auth.provider, uid: auth.uid).first_or_create |user| user.email = auth.info.email user.password = devise.friendly_token[0,20] user.name = auth.info.name # assuming user model has name user.profileimg = auth.info.profileimg # assuming user model has image end end

you have redirect user next link

<%= link_to "sign in twitter", user_omniauth_authorize_path(:twitter) %>

make sure told model (usually 'user') 'omniauthable'

devise :omniauthable, :omniauth_providers => [:twitter]

when user authorized twitter share info app, user's info available in hash request.env["omniauth.auth"].

see documentation more detail hash.

edit: explained here

ruby-on-rails twitter devise omniauth

No comments:

Post a Comment