当我点击退出时...我在控制台中收到此异常:
FB.logout()在没有访问令牌的情况下调用。
问题:我已经在Session中保存了Access令牌,我也可以在客户端访问它。我已经检查了这个答案,并且无法理解我如何调用handleSessionResponse
方法以及当我点击注销按钮时响应值是多少? https://stackoverflow.com/a/8430670/726802
我在布局页面(母版页)中有以下代码。
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '{!! env("FACEBOOK_APP_ID") !!}',
xfbml : true,
version : '{!! env("Facebook_Version") !!}'
});
FB.AppEvents.logPageView();
};
(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>
以下是刀片中的代码(内容页面)
<ul class="nav nav-sidebar">
<li class="active"><a href="#" onclick="logout();">Logout</a></li>
</ul>
<script>
function checkLoginState() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
} else {
}
});
}
function logout() {
debugger;
FB.logout(function(response) {
debugger;
// user is now logged out
});
}
</script>
答案 0 :(得分:2)
当更改页面时,似乎访问令牌不是持久的,尝试将会话存储在cookie中,如评论中所说的CBroe,如下所示:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '{!! env("FACEBOOK_APP_ID") !!}',
xfbml : true,
status : true,
cookie : true,
version : '{!! env("Facebook_Version") !!}'
});
FB.AppEvents.logPageView();
};
(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>
答案 1 :(得分:0)
使用FB.getLoginStatus获取Facebook JS SDK维护的有效访问令牌。并使用响应来调用FB.logout
function fbLogoutUser() {
FB.getLoginStatus(function(response) {
if (response && response.status === 'connected') {
FB.logout(function(response) {
// needed for older versions of SDK
FB.Auth.setAuthResponse(null, 'unknown');
// reload to remove accessToken from browser cookies
document.location.reload();
});
} else{
// You are not logged in
}
});
}
注销后重新加载页面将从浏览器cookie中删除当前会话的访问令牌。