我在画布应用程序上有以下JavaScript,如果用户未登录则会被调用(通过php检查)。
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '(appid)',
xfbml : true,
version : 'v2.0'
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
console.log('Logged in.');
}
else {
FB.Event.subscribe('auth.statusChange',function(response) {
if (response.authResponse) {
setTimeout('window.location.reload()',0);
};
});
FB.login(function(){}, {scope: 'email,user_birthday,user_friends'});
}
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = \"//connect.facebook.net/en_US/sdk.js\";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
问题是即使我告诉它这样做,窗口也不会重新加载。我知道按下&#34; login&#34;后会调用该函数。并接受权限,因为如果我包含并警告它在那时显示。
正如您所看到的,我已经尝试将其包装在setTimeout中,但这并不起作用。
如果我在此之后按F5,页面会重新加载并且我已登录。
帮助!
答案 0 :(得分:1)
事实证明,我所要做的就是改为:
top.location.href="https://apps.facebook.com/appname";
而不是window.location.reload()
这也可以防止浏览器询问是否应该重新提交数据。