我的网站上有一个退出页面,看起来像这样:
<div id="fb-root"></div>
<script>
// Load the Facebook SDK Asynchronously
(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));
// Init the SDK upon load
window.fbAsyncInit = function() {
FB.init({
appId : '[valid_app_id]' // App ID
});
FB.getLoginStatus(function(loginResponse){
// As soon as we get the login status... log out!
FB.logout(function(logoutResponse) {
// logged out!
});
});
}
</script>
从vanilla Chrome浏览器访问时,该页面运行良好。但是,如果
[x]Block third-party cookies and site data
选项在“内容设置...”下检查Chrome,页面无法注销用户,报告
FB.logout() called without an access token.
这个问题有解决方法吗?我希望能够将用户注销,即使他们的安全设置比通常更严格。
答案 0 :(得分:0)
我创建了一个解决此问题的解决方案,只需为您的访问令牌定义一个空值,并使用getLogoutUrl()mrthod将其最终重定向到注销页面:
$_SESSION['fb_YOUR_APP_ID_access_token'] = '';
$logout = $facebook->getLogoutUrl(array( 'next' => 'YOUR_LOGOUT_MESSAGE_PAGE'));
header("Location: $logout " );
抱歉我的英文不好!