2012-10-16 13 views
5

Wir haben Registrierung und Anmeldung über Facebook mit Rails, Devise und Omniauth. Wir sind auf Heroku gehostet und haben zwei Web-Dynos laufen.devise + omniauth facebook: current_user nil nach sign_in

manchmal Login mit Facebook ist fehlgeschlagen. Der eigentliche Händedruck zwischen unserer App und Facebook ist in Ordnung. Tatsächlich ist @user im Code unten eine tatsächliche Benutzermodellinstanz, der omniauth data Hash enthält alle Daten vom FB, sign_in scheint erfolgreich UND der current_user ist gesetzt.

Die Client-Seite führt eine Redirect (verschiedene Aktionen basierend auf Login-Kontext) zu einer anderen URL auf unserer Website nach erfolgreicher Anmeldung. Bei dieser URL suchen wir nach current_user ... aber current_user gibt nil zurück. Wenn der Anmeldevorgang einige Male wiederholt wird, funktioniert es schließlich.

Wir sind auf

  • Rails 3.2
  • 2.1.2
  • Devise
  • Omniauth-facebook 1.4.0
  • Rubin 1.9.3 P194
+0

bekam ein sehr ähnliches Problem (in meinem ist der current_user immer nil). Einige Leute schlagen vor, den Fälschungsschutz abzuschalten, werfen Sie einen Blick hier: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview#google – chrmod

+0

Bitte veröffentlichen Sie Ihre find_for_facebook-Definition von Ihrem Benutzermodul. – xvidun

+0

Dies ist ein nettes Tutorial: http://sreeharikmarar.blogspot.com/2013/01/omniauth-devise-authentication-using.html – duykhoa

Antwort

-2

ich nicht Wissen Sie, ob das wirklich die Lösung für das ist, was Sie beschrieben haben, aber ich frage mich, ob das:

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

wie dies lesen sollte?

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

das ist, wie mein sowieso ist. NICHT wirklich sicher, dass dies erklären würde, warum Ihre App den Benutzer willkürlich anmelden lässt.

Verwandte Themen