<div id="fb-root">
<script>
window.fbAsyncInit = function() {
FB.init({appId: "Your APP ID",
status: true,
cookie: true,
xfbml: true});
FB.getLoginStatus(function(response) {
if (response.session) {
// Send here parameters that logins to your system through your website login system
} else {
}
});
FB.Event.subscribe("auth.login", function(response) {
window.location.reload();
});
FB.Event.subscribe("auth.logout", function(response) {
window.location.reload();
//Send the Parameters that logouts user from your website through your website logout system;
});
};
(function() {
var e = document.createElement("script");
e.type = "text/javascript";
e.src = document.location.protocol +
"//connect.facebook.net/en_US/all.js";
e.async = true;
document.getElementById("fb-root").appendChild(e);
}());
4 回答
我在最近的网站上遇到了同样的问题,并找到了克服它的方法 . 我的解决方案允许用户已经在他们的计算机上登录到facebook,但没有在我的网站上自动登录,然后他们可以使用Facebook登录按钮登录,最后当他们退出时,它们不会将他们从Facebook登录到他们的计算机上,就在我的网站上(就像Digg和facebook一样) .
为此,我使用https://github.com/facebook/php-sdk/在PHP内检查是否存在与用户和网站的活动facebook会话(这将导致自动登录) . 如果有,我不会回应自动登录代码:
而只是渲染我自己的Facebook登录按钮,将链接到“process-login.php” .
process-login.php会设置自定义$ _SESSION变量,告诉我的网站有人被记录(无论是通过我自己的系统,还是通过facebook),然后重新加载引用页面(使用$ _SERVER ['HTTP_REFERER'])显示用户通过Facebook登录,因为我自己的$ _SESSION变量现已设置 . 要记录它们(没有完全记录它们的Facebook,只是我的网站),我只需要加载一个删除$ _SESSION变量的注销脚本 .
example.php(在github上的php-sdk中)非常有助于找到我的解决方案,尽管我必须对其进行大量定制以使其适用于我现有的系统 . 它至少帮助我了解如何在PHP中访问facebook会话变量(在示例中存储在$ me中) .
希望这可以帮助你,如果它仍然是一个问题,或在这种情况下它帮助其他人 .
编辑:结果我在极少数情况下仍然遇到一些自动登录问题 . 为了解决这个问题,我删除了event.subscribe('auth.login'),并在订阅auth.login之前创建了一个调用以下函数的facebook按钮来检查登录状态 . 这是功能:
我有同样的问题,我猜你正在使用facebook提供的脚本 . 在这种情况下,您有一个与window.fbAsyncInit事件关联的函数 . 每次加载页面时都会发生这种情况 . 在这个方法的最后你有代码:
FB.getLoginStatus(function(response) { statusChangeCallback(response); });
函数statusChangeCallback验证用户的Facebook状态(已连接,已授权或未知) . 在这里,如果用户“已连接”,则将其登录到您的站点 . 那就是问题,你总是试图用Facebook登录用户 .
这必须仅在点击时发生,因此您应该删除这些行
亲爱的,亲爱的,我想你已经让你的问题变得如此困惑 . 你的问题并没有说明你想要什么 . 至于我已经理解,我认为你想通过facebook连接将用户连接到你的网站,你想要当用户点击facebook注销时,它会自动从你的网站注销 . 如果我对您的问题的理解是正确的,那么只需让用户通过Facebook登录并在FB.Event.Subscribe事件中登录您的系统 . 使用以下代码登录按钮
当用户允许您的Facebook帐户与您的网站连接时
并将上面的整个代码放在<body>标记之后
如果你有:
试着评论它/ * fb.Event ..... * /