के बाद current_user nil हमारे पास रेल, devise, और omniauth का उपयोग कर फेसबुक के माध्यम से पंजीकरण और लॉगिन है। हम दो वेब dynos चल रहा है, Heroku पर होस्ट किया गया है।devise + omniauth facebook: sign_in
कभी-कभी फेसबुक के साथ लॉगिन विफल हो रहा है। हमारे ऐप और फेसबुक के बीच वास्तविक हैंडशेक ठीक है। असल में, @user के नीचे दिए गए कोड में एक वास्तविक उपयोगकर्ता मॉडल उदाहरण है, ओमनीथ डेटा हैश में एफबी से सभी डेटा शामिल हैं, साइन_इन सफल लगता है और current_user सेट है।
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
@user = User.find_for_facebook(env["omniauth.auth"].extra.raw_info, current_user)
logger.info ">>>>>> OMNIAUTH FB BEGIN >>>>>>"
logger.info env["omniauth.auth"].inspect
logger.info "User is: #{@user.inspect}"
session["devise.facebook_data"] = request.env["omniauth.auth"].except("extra")
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook"
res = sign_in(:user, @user)
logger.info "Sign In Result: #{res.inspect}"
logger.info "CURRENT_USER: #{current_user.inspect}"
logger.info "<<<<<< OMNIAUTH FB END <<<<<<"
respond_to do |format|
format.json
end
end
end
क्लाइंट-साइड सफल लॉगिन पर हमारी साइट पर किसी अन्य URL पर रीडायरेक्ट (लॉगिन संदर्भ के आधार पर अलग-अलग क्रियाएं) करता है। उस यूआरएल पर, हम current_user की जांच करते हैं ... लेकिन current_user शून्य लौट रहा है। अगर लॉगिन प्रक्रिया को दो बार दोहराया जाता है, तो अंततः यह काम करता है।
हम पर
- रेल 3.2
- वसीयत 2.1.2
- Omniauth-फेसबुक 1.4.0
- रूबी 1.9.3 p194
एक बहुत ही समान समस्या मिली (मेरा वर्तमान_user हमेशा शून्य है)। कुछ लोग फर्जी सुरक्षा को बदलने का सुझाव देते हैं, यहां एक नज़र डालें: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview#google – chrmod
कृपया अपने उपयोगकर्ता मॉड्यूल से अपनी find_for_facebook परिभाषा पोस्ट करें। – xvidun
यह एक अच्छा ट्यूटोरियल है: http://sreeharikmarar.blogspot.com/2013/01/omniauth-devise-authentication-using.html – duykhoa