Omniauth-facebook: всплывающее окно входа не перенаправляет - PullRequest
1 голос
/ 25 января 2012

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

Я последовал примеру на https://github.com/mkdynamic/omniauth-facebook/blob/master/example/config.ru для приложения rails.

<div id="fb-root"></div>

    <script type="text/javascript">
      window.fbAsyncInit = function() {
        FB.init({
          appId  : '#{ENV['APP_ID']}',
          status : true, // check login status
          cookie : true, // enable cookies to allow the server to access the session
          oauth  : true, // enable OAuth 2.0
          xfbml  : true  // parse XFBML
        });
      };

      (function(d) {
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
      }(document));

      $(function() {
        $('a').click(function(e) {
          e.preventDefault();

          FB.login(function(response) {
            if (response.authResponse) {
              $.get('/auth/facebook/callback');
            }
          }, { scope: '#{SCOPE}' });
        });
      });
    </script>

    <p>
      <a href="#">Connect to FB</a>
    </p>

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

Так почему же браузер не перенаправляется, даже если вход выполнен успешно? Должен ли я что-то изменить в методе контроллера, который регистрирует пользователя (например, «response_to» со специальным форматом)?

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012

Добавьте :authorize_params => { :display => 'popup' } к информации о провайдере для Facebook в вашем инициализаторе.

0 голосов
/ 25 января 2012

Когда пользователь входит в систему через FB.login, диалоговое окно закрывается, и пользователь возвращается к главному окну, и вызывается обратный вызов.

В вашем обратном вызове вы делаете $.get('/auth/facebook/callback');, который является вызовом ajax.

Где перенаправление?

...