我正在尝试升级到3.1 SDK并遇到一些有问题的行为:当我通过我的网站上的FB登录按钮登录时,页面重新加载,尽管事实上我在我的网站中定义了自己的JS方法登录按钮的“onlogin”事件。
因为页面立即重新加载,看来我自己的“onlogin”脚本(检查FB用户并将其记录到我的网站中)似乎被切断或不会触发。因此,用户无法登录该站点。
另一个副作用很奇怪:登录FB vi我的网站的FB按钮后,我将显示为登录Facebook.com,但几秒钟后,Facebook.com会出现一个弹出窗口,显示“不是登录。请登录继续(是否)。“
像往常一样,我无法在文档中找到帮助,而且我真的很难过。这是我的FB init:
<script>
window.fbAsyncInit = function() {
FB.init({
appId: '<?php echo cConfiguration::$facebookAppId;?>',
cookie: true,
xfbml: true,
oauth: true
});
FB.Event.subscribe('auth.logout', function(response) {
window.location = '/signout.php5';
});
};
(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);
}());
</script>
登录按钮是:
<fb:login-button length="long" autologoutlink="false" onlogin="fbLogin();"></fb:login-button>
编辑我也试过这个没有任何选项或“onlogin”事件的按钮代码,我也得到了同样的行为。
所以我的问题:
答案 0 :(得分:1)
您已为登出附加了事件处理程序,但未附加登录。加上这个。
FB.Event.subscribe('auth.login', function(response) {
return false;
});
虽然,防止重新加载可能不是你想要做的。相反,我发现效果很好的是检测用户是否点击了登录按钮。这个过程是。
答案 1 :(得分:1)
好的,我发现了看似无法控制的页面重新加载的原因
出于某种原因,只要我通过Facebook登录提示登录,就会触发 auth.logout 事件。
所以我改变了这一行:
FB.Event.subscribe('auth.logout', function(response) {
window.location = '/signout.php5';
});
到
FB.Event.subscribe('auth.logout', function(response) {
return false;
});
答案 2 :(得分:0)
使用此作为您的登录按钮,我相信您的fbLogin()必须有一些东西;正在重新加载页面的param。正常行为只是刷新按钮,必须使用Event.subscribe强制页面刷新。
<fb:login-button autologoutlink="false"></fb:login-button>