So, I just got setup using Rails 3, Devise and OmniAuth via https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview.
I'm successfully authenticating users via Facebook, but they are not "rememberable" despite being marked with:
devise [...]: rememberable, :omniauthable
I tried calling:
@the_user.remember_me!
...to no avail. No cookie is being stored/set which means the user does not persist across sessions.
Has anybody managed to get a user sourced from FB remembered via cookies? In my mind, this should be happening automatically.
Thanks for any ideas or feedback you guys might have.
I'd like to elaborate on the (correct) answer @jeroen-van-dijk gave above which worked for me.
In config/routes.rb, add a new route in the devise_for block:
devise_for :users, :controllers => {
:omniauth_callbacks => "user_omniauth_callbacks" } do
...
get '/users/connect/:network', :to => redirect("/users/auth/%{network}"),
:as => 'user_oauth_connect'
end
Then change your "login using facebook" link to use the new route:
<!-- before it linked to user_omniauth_authorize_path -->
<%= link_to "Sign in using Facebook", user_oauth_connect_path(:facebook) %>
In app/controllers/user_omnniauth_callbacks_controller.rb
class UserOmniauthCallbacksController < Devise::OmniauthCallbacksController
include Devise::Controllers::Rememberable
def facebook
@user = User.find(...)
...
remember_me(@user) # set the remember_me cookie
end
end
This solution works well for me using Rails 3.1 and Devise 1.4.9.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With