2012-10-16 8 views
5

Posiadamy rejestrację i logowanie przez facebook za pomocą szyn, devise i omniauth. Jesteśmy hostowani na Heroku, prowadząc dwa dynamo sieciowe.devise + omniauth facebook: current_user zero po sign_in

czasami logowanie przy użyciu Facebooka kończy się niepowodzeniem. Rzeczywisty handshake między naszą aplikacją a Facebookiem jest w porządku. W rzeczywistości w kodzie poniżej @user jest rzeczywistą instancją modelu użytkownika, a Hash danych Omniauth zawiera wszystkie dane z FB, sign_in wydaje się sukcesem ORAZ jest ustawiony current_user.

Strona klienta wykonuje przekierowanie (różne akcje w oparciu o kontekst logowania) do innego adresu URL w naszej witrynie po udanym logowaniu. Przy tym adresie URL sprawdzamy dla current_user ... ale current_user zwraca zero. Jeśli proces logowania zostanie powtórzony kilka razy, w końcu zadziała.

Jesteśmy na

  • Rails 3.2
  • opracować 2.1.2
  • Omniauth-facebook 1.4.0
  • Ruby 1.9.3 p194
+0

ma bardzo podobny problem (w moim current_user jest zawsze zerowy). Niektórzy ludzie sugerują, aby wyłączyć ochronę przed fałszerstwami, zajrzyj tutaj: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview#google – chrmod

+0

Proszę zaksięgować swoją definicję find_for_facebook z modułu użytkownika. – xvidun

+0

To jest ładny samouczek: http://sreeharikmarar.blogspot.com/2013/01/omniauth-devise-authentication-using.html – duykhoa

Odpowiedz

-2

nie wiem wiem, czy to naprawdę rozwiązanie tego, co opisałeś, ale zastanawiam się, czy to:

@user = User.find_for_facebook (env [ "omniauth.auth"]. Extra.raw_info, current_user)

powinien przeczytać jak to?

@user = User.find_for_facebook (request.env [ "omniauth.auth"]. Extra.raw_info, current_user)

ten sposób kopalni jest tak czy inaczej. Nie jestem pewien, czy to by wyjaśniało, dlaczego twoja aplikacja arbitralnie pozwala użytkownikowi się zalogować.

Powiązane problemy