如何在登录Facebook时在弹出框中打开Facebook登录表单

时间:2011-09-09 11:30:57

标签: ruby-on-rails ruby-on-rails-3 facebook facebook-graph-api omniauth

我正在我的网络应用程序中使用Facebook登录。我正在使用omniauth gem。我想在新弹出窗口中打开登录到Facebook表单。我怎样才能做到这一点?请帮忙。

1 个答案:

答案 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>

这对我们很有用,因为它允许我们逐页覆盖默认行为(转到根登录页面)(例如,如果有人只是在现有会话中添加身份验证),默认情况下,无需任何额外工作即可完成预期工作。