Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当从omniauth facebook进行身份验证时,用户未作为设计用户登录?_Ruby On Rails_Ruby_Facebook_Devise_Omniauth - Fatal编程技术网

Ruby on rails 当从omniauth facebook进行身份验证时,用户未作为设计用户登录?

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

我已经在我的应用程序中集成了omniauth facebook来验证用户。它工作正常,但有一个问题,用户不是作为设计用户登录。我遵循这个教程 我面临的问题太多了。首先,对于登录用户,所有应该为true的条件都是false,如

如果用户登录?
为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
任何帮助都将不胜感激。谢谢