Чтобы очистить сессию FB, вы должны использовать FB JS SDK.
Итак, вот что я сделал.
Во-первых, init FB JS. Я использовал частичное, но вы можете просто поместить это в макет
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: '[APP_ID]',
status: true,
cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
Затем я связал ссылку выхода из системы с функцией FB.logout, которая вызывает destroy_user_session_path в application.js.
$(function() {
$('#logout').click(function(e) {
FB.logout(function(response) {
var url = $('#logout').attr('redirect_url');
$.ajax({
url: url,
type: 'DELETE',
success: function(msg) {
window.location = '/';
}
});
});
e.preventDefault();
});
});
My application.html.erb.
<% if user_signed_in? %>
<p><%= link_to "logout", "#", :id => "logout", :redirect_url => destroy_user_session_path %></p>
<p>Hi, <%= current_user.email %></p>
<% else %>
<p><%= link_to 'Login with Facebook', '/auth/facebook/' %></p>
<% end %>