Facebook Выход с моего сайта в Ларавеле
Когда я нахожусь на выходе... Я получаю это исключение в консоли:
FB.logout(), вызываемый без токена доступа.
Вопрос: У меня уже есть токен доступа, сохраненный в сеансе, и у меня есть доступ к нему и на стороне клиента. Я уже проверил этот ответ и не мог понять, как я могу вызвать метод handleSessionResponse
и как будет отображаться значение ответа при нажатии кнопки выхода из системы? qaru.site/info/199715/...
У меня ниже кода на странице макета (главная страница).
<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>
Ответы
Ответ 1
Кажется, что токен доступа не является постоянным при изменении страницы, попробуйте сохранить сеанс в 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>
Ответ 2
Используйте 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 браузера.