我正在我的网络应用程序中使用Facebook登录。我正在使用omniauth gem。我想在新弹出窗口中打开登录到Facebook表单。我怎样才能做到这一点?请帮忙。
答案 0 :(得分:1)
我假设您的OmniAuth一般都在工作,并且只对如何在新窗口中执行操作感到好奇。如果你还没有设置OmniAuth,那就有一个很棒的RailsCast here。
OmniAuth在开箱即用的弹出窗口中应该没有任何问题。首先,只需在您的登录页面上添加target='_blank'
,如下所示:
<%= link_to "Log in with Facebook", "/auth/facebook", :target => '_blank' %>
这应该在新窗口中加载Facebook授权页面,您应该能够完成整个OAuth流程。但是,一旦完成OAuth,您将需要渲染一个包含一些javascript的模板来处理页面关闭。这是我们遵循的模式:
<script language='javascript'>
if (opener.authenticationSuccessful) {
opener.authenticationSuccessful();
} else {
opener.location.href = "<%= root_path %>"; // your 'login path'
}
window.close();
</script>
这对我们很有用,因为它允许我们逐页覆盖默认行为(转到根登录页面)(例如,如果有人只是在现有会话中添加身份验证),默认情况下,无需任何额外工作即可完成预期工作。