Я пытаюсь реализовать всплывающее окно для моего проекта RoR для входа в систему для Twitter. В настоящее время, когда вы нажимаете логин, вы перенаправляетесь на страницу авторизации, а затем, как только вы вошли в систему, вы перенаправлены обратно. Я хочу, чтобы всплывающее окно появилось поверх текущего окна браузера, а затем закрылось после аутентификации.Всплывающее окно для Twitter логин
Это мой сессии контроллер:
def create
auth_hash = request.env['omniauth.auth']
@user = User.find_by_user_id(auth_hash["uid"])
if @user
@authorization = @user.authorization
flash.now[:notice] = "Welcome back #{@user.name}! You have already signed up."
session[:user_id] = auth_hash["uid"].to_i
else
@user = User.new :name => auth_hash["info"]["name"], :user_name => auth_hash["info"]["nickname"], :user_id => auth_hash["uid"], :profile_image_url => auth_hash["info"]["image"].sub("_normal", "")
@user.build_authorization :secret => auth_hash['credentials']['secret'], :token => auth_hash['credentials']['token']
@user.build_preference
@user.save!
@user.errors.each do |error|
puts error
end
flash.now[:notice] = "Hi #{@user.name}! You've signed up."
session[:user_id] = auth_hash["uid"].to_i
end
redirect_to :root
end
def logout
session[:user_id] = nil
redirect_to :root
end
def failure
render :text => "Sorry, but you didn't allow access to our app!"
end
def destroy
@user = current_user
if @user
@user.destroy
end
redirect_to :root
end
end
Я искал вокруг, и я вижу, что Javascript всплывающий есть способ сделать это, так что я получил это от одного из других вопросов StackOverflow:
Turn omniauth facebook login into a popup
Если код всплывающего окна, как показано ниже:
function popupCenter(url, width, height, name) {
var left = (screen.width/2)-(width/2);
vartop = (screen.height/2)-(height/2);
return window.open(url, name, "menubar=no,toolbar=no,status=no,width="+width+",height="+height+",toolbar=no,left="+left+",top="+top);
}
$("a.popup").click(function(e) {
popupCenter($(this).attr("href"), $(this).attr("data-width"), $(this).attr("data-height"), "authPopup");
e.stopPropagation(); return false;
});
И я сделал вид обратного вызова, но то, что я не знаю, куда поместить эту строку:
=link_to "Log in with Facebook", omniauth_authorize_path(:user, :facebook), :class => "popup", :"data-width" => 600, :"data-height" => 400
Класс => Всплывающее линия должна идти туда, где мы устанавливаем ключ Twitter/тайна но я не думаю, что это подходящее место (Omniauth - Display facebook connect as popup). Это не сработало. :/
Любые идеи?