2012-01-08 1 views
1

Facebookの認証を処理するためにomniauth-facebookを使用しています。しかし、ドキュメントでは非常にシンプルなポップアップでFacebookのダイアログを開くと、私のために働いていません。Rails 3:Omniauth-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がモーダル/ iframe /などを扱うために使用するものがわかりません。これが動作する前に何かを含めるべきですか?

ありがとうございます!

答えて

3

時間と数時間の研究と試行錯誤の末、私はうまくいく解決策を見つけました。私はもっ​​と統合ソリューションが必要なように感じますが、わかりません。

この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> 

(またはあなたが親ページに起こるしたいものは何でも)

関連する問題