Ruby on rails 4 重定向新的Facebook登录用户

Ruby on rails 4 重定向新的Facebook登录用户,ruby-on-rails-4,login,omniauth,facebook-login,omniauth-facebook,Ruby On Rails 4,Login,Omniauth,Facebook Login,Omniauth Facebook,当新用户注册到我的网站时,他们会被重定向到个人教程。这目前适用于在网站上注册的用户。然而,当一个新用户单击“使用facebook登录”时,他们会被重定向到错误的URL,如果他们之前登录过该URL,则会绕过教程。有谁能帮我设置它,让新的Facebook用户被重定向到教程,而现有的Facebook绕过它?我已经安装了omniauth facebook gem 这是我的密码。谢谢你花时间看这个 User.controller.rb class UsersController < Applicat

当新用户注册到我的网站时,他们会被重定向到个人教程。这目前适用于在网站上注册的用户。然而,当一个新用户单击“使用facebook登录”时,他们会被重定向到错误的URL,如果他们之前登录过该URL,则会绕过教程。有谁能帮我设置它,让新的Facebook用户被重定向到教程,而现有的Facebook绕过它?我已经安装了omniauth facebook gem

这是我的密码。谢谢你花时间看这个

User.controller.rb

class UsersController < ApplicationController
  before_action :require_signin, except: [:new, :create]
  before_action :require_correct_user, only: [:show, :edit, :update, :image, :tutorial]
  before_action :require_admin, only: [:index, :destroy]


def new
  @user = User.new
end

def create
  @user = User.new(user_params) 
  if @user.save
    session[:user_id] = @user.id
    redirect_to users_tutorial_url (@user)
  else
    render :new
  end 
end

def tutorial
  @user = User.find(params[:id])
end

private

def user_params
  params.require(:user).permit(:id, :first_name, :last_name, :email, :born_in, :gender, :password, :password_confirmation)
end


def require_correct_user
 @user = User.find(params[:id])
   redirect_to products_url unless current_user? (@user)
 end
end
class SessionsController < ApplicationController

  def new
  end

  def create
    if user = User.authenticate(params[:email], params[:password])
      session[:user_id] = user.id
      redirect_to(session[:intended_url] || filtered_products_path(:trending))
      session[:intended_url] = nil
    elsif 
    auth = request.env["omniauth.auth"]
    user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
    session[:user_id] = user.id
    redirect_to(session[:intended_url] || filtered_products_path(:trending))
    session[:intended_url] = nil
    else  
      flash.now[:alert] = "Invalid email/password combination!"
      render :new
  end
end

  def destroy
    session[:user_id] = nil
    redirect_to root_url
  end
end
class User < ActiveRecord::Base
  before_create { generate_token(:auth_token) }


def self.authenticate(email, password)
  user = User.find_by(email: email)
  user && user.authenticate(password)
end


def generate_token(column)
  begin
    self[column] = SecureRandom.urlsafe_base64
  end while User.exists?(column => self[column])
end

  def self.create_with_omniauth(auth)
    where(provider: auth.provider, uid: auth.uid).first_or_create.tap do |user|
    user.provider = auth.provider
    user.uid = auth.uid
      user.email = auth.info.email
      user.first_name = auth.info.first_name
      user.last_name = auth.info.last_name
      user.email = auth.info.email
    user.oauth_token = auth.credentials.token
    user.oauth_expires_at = Time.at(auth.credentials.expires_at)
    user.save(:validate => false)  
    end
  end

end
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'Facebook Key ###', 'Facebook Secret ###'  
end