我所有的页面都有 facebook 登录按钮并加载 facebook SDK。
这是我加载FB的JS代码:
window.fbAsyncInit = function() {
FB.init({
appId : 129837912837129837128937, //fake id
channelUrl : '//www.example.com/channel.php', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oath : true
});
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = \"//connect.facebook.net/en_US/all.js\";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
问题重现:
1) 使用注销链接从我网站内的 facebook 注销。Facebook.com 也会被注销。到目前为止还好。我的网站现在有用户注销。
2) 用户有时会访问 facebook.com 并登录。他使用 cookie 来维护会话。
3)然后他直接通过链接 /page.php?5&sdasda&asdad 或任何其他非主页链接访问我的网站,并且页面完全加载(除了最大延迟为 1-2 秒的 FB 登录按钮)。
4) 当 FB 登录按钮最终加载时,FB js 检测到用户已经登录 facebook.com(查看在步骤 2 中获得的 fb cookie),因此尝试通过重定向到根目录(www.mydomain)来“登录”他.com) 并且不刷新当前页面。
这是我的登录按钮的样子:
<div class="fb-login-button fb_iframe_widget " scope="status_update,email,user_birthday,read_stream,publish_stream,share_item"></div>
呈现为:
这是正常行为吗?我首先做错了什么吗?有什么办法解决这个问题吗?