4

基本上,这是我的js代码。

<script>
window.fbAsyncInit = function() {
FB.init({
appId: '<?php echo $appId; ?>',
cookie: true,
xfbml: true,
oauth: true,
channelUrl: '//www.domain.com/channel.html'
});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
FB.Event.subscribe('auth.logout', function(response) {
window.location.reload();
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
function login() {
    FB.login( function(resp) {
        //not important atm}
    }, {scope: 'email, user_location, user_website'} );
}
</script>

一个按钮用于调用函数 login()

代码工作正常。它与 PHP sdk 配对,我可以很好地进行身份验证。问题是弹出窗口。当浏览器窗口最大化时(这在三台不同计算机上的 IE 和 FF 中是一致的。禁用插件)弹出窗口显示为垂直居中但水平屏幕的绝对右侧。当窗口没有最大化时,它是居中的。fb-root div 紧跟在 body 标签之后,我尝试过的所有内容都没有修复它。以前的用户表示,他们已经通过覆盖 window.open() 并编辑 left 属性来解决此问题,但他们从未真正详细说明如何执行此操作。由于 sdk 是从 FB 获取的,因此修改它是不可能的。此外,我更愿意让这段代码工作。

此外,在测试服务器的空白页面上使用的这个 js 代码也出现了完全相同的错误。我认为这可能是 SDK 代码的问题,但我不确定。任何关于如何让它工作的想法,无论是否破解,都值得赞赏。我一直在努力!

编辑:差点忘了。当我使用 xfbml 登录按钮时,弹出窗口很好。

4

0 回答 0