javascript - 导轨 3 : Omniauth-Facebook: Won't load in a popup

标签 javascript jquery omniauth

我正在使用 omniauth-facebook 来处理 Facebook 身份验证,它运行得非常好。但是,在弹出窗口中打开 facebook 对话框(在文档中看起来非常简单)对我不起作用。

设计.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 等。在这起作用之前我应该​​包括什么吗?

提前致谢!

最佳答案

经过数小时的研究和反复试验,我找到了一个有效的解决方案。我觉得一定有一个更集成的解决方案,但我不知道。

此 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>

(或任何你想发生在父页面上的)

关于javascript - 导轨 3 : Omniauth-Facebook: Won't load in a popup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8780009/

相关文章:

javascript - for循环中的两个条件

javascript - 滚动表(但不是 thead)

javascript - 根据选中的复选框数量生成动态 li 元素

jquery - 主干点击事件中断

ruby-on-rails - 使用 ruby​​ 设置 CORS - 'Access-Control-Allow-Origin'

ruby-on-rails - 使用 Ruby on Rails 4 配置中间件

ruby-on-rails - rails 3.2 应用程序中的 OAuthException 101

javascript - 提供 Rest API 时的跨站点来源问题

javascript - 使用 MixItUp jquery 插件从 GridView 切换到 ListView

javascript - Facebook评论滚动