Rails 3: Omniauth-Facebook: не будет загружаться во всплывающем окне - PullRequest
1 голос
/ 08 января 2012

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

devise.rb:

require "omniauth-facebook"
config.omniauth :facebook, "xxx", "yyy", { :scope => 'publish_stream,publish_actions,email,read_stream,offline_access', :display => 'popup' }

Однако загрузка не выполняется ввсплывающее окноСкорее, он переходит на facebook.com, а затем обратно.Тем не менее, загружаемый URL включает в себя «display = popup», поэтому код читается правильно, он просто не загружается в модальном режиме.

Это похоже на проблему с Javascript?Я не уверен, что Omniauth использует для работы с модалами / фреймами и т. Д. Есть ли что-то, что я должен включить, прежде чем это сработает?

Заранее спасибо!

1 Ответ

3 голосов
/ 10 января 2012

После многих часов исследований, проб и ошибок я нашел решение, которое работает.Я чувствую, что должно быть более интеграционное решение, но я не знаю его.

Этот jQuery вызовет окно аутентификации fb выше текущего:

$('a.fb-auth').click(function(e) {
var width = 600, height = 400;
var left = (screen.width / 2) - (width / 2);
var top = (screen.height / 2) - (2 * height / 3);
var features = 'menubar=no,toolbar=no,status=no,width=' + width + ',height=' + height + ',toolbar=no,left=' + left + ',top=' + top;
var loginWindow = window.open('/users/auth/facebook', '_blank', features);
loginWindow.focus();
e.preventDefault();
return false;
});

И на ваш обратный вызовстраница:

<script>
window.opener.location = "/";
window.close(); 
</script>

(или что вы хотите, чтобы это происходило с родительской страницей)

...