2012-01-08 75 views
1

我使用omniauth Facebook的处理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,它只是没有在一个模式加载。

这感觉就像一个JavaScript的问题?我不知道什么Omniauth用来处理模态/ I帧/等有什么我应该包括在此之前是否行得通呢?

在此先感谢!

回答

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> 

(或任何你想要发生父页)

相关问题