Как открыть форму входа в Facebook во всплывающем окне при входе через Facebook - PullRequest
2 голосов
/ 09 сентября 2011

Я выполняю вход через Facebook в моем веб-приложении.Я использую для этого omniauth gem.Я хочу открыть форму входа в Facebook в новом всплывающем окне.Как я могу это сделать?Пожалуйста, помогите.

1 Ответ

1 голос
/ 09 сентября 2011

Я предполагаю, что у вас OmniAuth работает в целом, и вам интересно только, как это сделать в новом окне. Если вы еще не настроили OmniAuth, есть отличный RailsCast об этом здесь .

У 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>

Это хорошо работает для нас, поскольку позволяет переопределить поведение по умолчанию (перейти на корневую страницу входа в систему) на постраничной основе (например, если кто-то только добавляет аутентификацию в существующий сеанс), но по умолчанию будет делать то, что вы ожидаете, без какой-либо дополнительной работы.

...