我们有一个 facebook 网站应用程序用作公共活动信息亭。许多人将通过我们的网站在同一设备上登录 facebook(设置在展位上,如 ipad 或类似设备)。
完成后,我们需要将该人从 Facebook 本身注销;不仅仅是破坏我们网站的图形 API 会话。
这是问题所在:
- 用户走到我们的 ipad,它有一个浏览器加载到我们的网站。他或她点击“facebook登录”,并被重定向到facebook登录。
- 他们登录,授予我们的应用权限,然后 facebook 将他们重定向回我们的网站。
- 在他们使用我们的网站(发表评论等)后,他们会在我们的网站上单击注销。
- 下一个用户坐下,点击“facebook 登录”,然后被重定向到 facebook。到达 facebook.com 后,浏览器仍然为前一个用户登录,授予该用户访问第一个用户的 facebook 的权限(只是一个小问题 =)
我希望我可以将用户发送到 facebook,到一个只有注销按钮的页面,并让 facebook 将浏览器重定向回我的网站,为下一个用户做好准备。这就是登录的工作方式,我需要一个等效的注销。
编辑:
非常感谢您的回答。我们花了大约 3 天的时间来解决这个问题;如果我们发布任何人都可以插入的通用代码,我希望您能原谅我们。将其放在 HTML 页面上,然后访问该页面,将用户从 Facebook和您的网站中注销。
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'your APP ID', // App ID
channelUrl : '//WWW.YOURSITE.COM/channel.php or channel.html or whatever yours is', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional initialization code here
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
FB.logout();
alert('Thanks! You have been logged out of facebook.');
}
});
};
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>