Omniauth-facebook:登录弹出窗口不重定向

时间:2012-01-24 22:30:54

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

我搬到了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>

它几乎可以正常工作:单击链接将显示弹出窗口并进行身份验证,但是当弹出窗口关闭时,我仍然在登录页面上,即使我可以在日志中看到目标页面已处理,如果我点击客人和会员都可以使用的链接,我将获得会员版本,这是登录工作的另一个证据。

那么,即使登录成功,为什么浏览器不会被重定向?我应该在用户登录的控制器方法中修改某些内容(比如使用特殊格式的“respond_to”)吗?

由于

2 个答案:

答案 0 :(得分:0)

当用户通过FB.login登录时,对话框关闭,用户返回主窗口,并调用回调。

在你的回调中你执行$.get('/auth/facebook/callback');,这是一个ajax调用。

重定向在哪里?

答案 1 :(得分:0)

在初始化程序中将:authorize_params => { :display => 'popup' }添加到facebook的提供商信息中。