Chúng tôi đã đăng ký và đăng nhập qua facebook bằng cách sử dụng đường ray, phát minh và omniauth. Chúng tôi được lưu trữ trên Heroku, chạy hai dynos web.đưa ra + omniauth facebook: current_user nil sau khi sign_in
đôi khi đăng nhập bằng facebook không thành công. Sự bắt tay thực sự giữa ứng dụng của chúng tôi và facebook là tốt. Trong thực tế, trong mã dưới đây @user là một thực thể mô hình người dùng thực tế, các dữ liệu omniauth Hash chứa tất cả các dữ liệu từ FB, sign_in có vẻ thành công và current_user được thiết lập.
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
Phía máy khách thực hiện chuyển hướng (các hành động khác nhau dựa trên ngữ cảnh đăng nhập) đến một URL khác trên trang web của chúng tôi khi đăng nhập thành công. Tại URL đó, chúng ta kiểm tra current_user ... nhưng current_user đang trả về nil. Nếu quá trình đăng nhập được lặp lại một vài lần, cuối cùng nó hoạt động.
Chúng tôi đang ở trên
- Rails 3.2
- lập mưu 2.1.2
- Omniauth-facebook 1.4.0
- của Ruby 1.9.3 p194
có một vấn đề rất giống nhau (trong tôi current_user luôn luôn là nil). Một số người đề nghị chuyển sang chế độ bảo vệ giả mạo, hãy xem tại đây: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview#google – chrmod
Vui lòng gửi định nghĩa find_for_facebook của bạn từ mô-đun Người dùng của bạn. – xvidun
Đây là một hướng dẫn hay: http://sreeharikmarar.blogspot.com/2013/01/omniauth-devise-authentication-using.html – duykhoa