2012-01-24 21 views
1

私はomniauth-facebookに移動し、すごくうまくいっています。私はログインボタンのためのポップアップを使用しようとしてきましたが、私はそれを動作させることができません。Omniauth-facebook:ログインポップアップがリダイレクトされない

レールアプリの場合はhttps://github.com/mkdynamic/omniauth-facebook/blob/master/example/config.ruの例に従っています。リンクをクリックすると、ポップアップが表示され、私は認証を受けるが、ポップアップが閉じたとき、私は私が先のページが処理されるログに見ることができるにもかかわらず、ログインページに残る:それはほとんど機能し

<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」のように)?

おかげ

答えて

0

ユーザーがダイアログを閉じ、ユーザーが戻ってメインウィンドウに戻り、コールバックが呼び出されるFB.login経由でログインします。

コールバックでは、$.get('/auth/facebook/callback');を実行します。これはajaxコールです。

リダイレクトはどこですか?

+0

リダイレクトは、/ auth/facebook/callback(UserSessionsControler#create_with_provider)によって呼び出されたコントローラメソッドにあります。 – Nycen

+0

それはajaxリクエストです。それ自体はページを変更しません。あなたが[サーバーから何かを取得している](http://api.jquery.com/jQuery.get/)それで何もしないでください。 – ori

+0

まあ、私は何かをして、response_toをformat.jsとリダイレクトで使用していると思っていましたが、それは呼び出されません。または、ページをリロードするrjsビューをレンダリングする必要がありますか? – Nycen

0

イニシャライザのfacebookのプロバイダ情報に:authorize_params => { :display => 'popup' }を追加します。

関連する問題