答えて

1

私はOmniAuthが一般的に動作していると仮定し、新しいウィンドウでそれを行う方法についてのみ興味があります。まだOmniAuthをセットアップしていない場合、それについての素晴らしいRailsCastがありますhere

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> 

それはページごとのデフォルトの動作(rootログインページに移動します)をオーバーライドするために私達を許可するので、これは、私たちのためにうまく機能は、(例えば、誰かが唯一である場合既存のセッションに認証を追加します)、デフォルトでは、追加作業なしに期待どおりのことを行います。

関連する問題