Ruby on rails 当从omniauth facebook进行身份验证时,用户未作为设计用户登录?
我已经在我的应用程序中集成了omniauth facebook来验证用户。它工作正常,但有一个问题,用户不是作为设计用户登录。我遵循这个教程 我面临的问题太多了。首先,对于登录用户,所有应该为true的条件都是false,如Ruby on rails 当从omniauth facebook进行身份验证时,用户未作为设计用户登录?,ruby-on-rails,ruby,facebook,devise,omniauth,Ruby On Rails,Ruby,Facebook,Devise,Omniauth,我已经在我的应用程序中集成了omniauth facebook来验证用户。它工作正常,但有一个问题,用户不是作为设计用户登录。我遵循这个教程 我面临的问题太多了。首先,对于登录用户,所有应该为true的条件都是false,如 如果用户登录?为false当前用户为空,则表示该用户在经过身份验证后未登录 Omniauth控制器回调方法代码为 def facebook # You need to implement the method below in your model (e.g. ap
如果用户登录?
为false当前用户
为空,则表示该用户在经过身份验证后未登录
Omniauth控制器回调方法代码为
def facebook
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.from_omniauth(request.env["omniauth.auth"])
if @user.persisted?
sign_in(:user, @user)
redirect_to :controller => '/donations', :action => 'donor_history'
set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
else
session["devise.facebook_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
应用程序控制器代码如下:
class ApplicationController < ActionController::Base
add_flash_types :success, :warning, :danger, :info
protect_from_forgery prepend: true
before_filter :configure_permitted_parameters, if: :devise_controller?
layout :layout_by_resource
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
private
def layout_by_resource
if devise_controller?
"admin"
else
"application"
end
end
protected
def after_sign_in_path_for(resource)
#request.env['omniauth.origin'] || root_path
if(resource.admin==false)
'/donations/donor_history'
else
'/admins/' #your path
end
end
def after_sign_out_path_for(resource)
'/users/sign_in' #your path
end
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) do |user_params|
user_params.permit(:admin, :email, :password, :password_confirmation,:first_name,:last_name)
end
devise_parameter_sanitizer.permit(:account_update) do |user_params|
user_params.permit(:admin, :email, :password, :password_confirmation,:current_password,:first_name,:last_name)
end
end
end
class ApplicationController
任何帮助都将不胜感激。谢谢