我正在使用 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/