如何清除facebook会话和cookie时,使用设计+ omniauth + rails 3



我在rails 3上使用设计+ omniauth实现了使用facebook connect创建帐户和登录。但是,我的问题是,当用户注销时,清除facebook会话和cookie。目前,当用户注销时,似乎会清除当前会话。但是,当用户再次登录时,由于facebook cookie,它会自动登录用户。我希望sign_out方法来清除cookie,以便当用户下次尝试登录时,它会要求用户与facebook登录。

现在我正在使用默认的设计路由"device_for:users"。我是否应该通过创建"类SessionsController

任何帮助将非常感激!

为了清除FB会话,你必须使用FB JS SDK。

所以,这就是我所做的。

首先,init FB JS。我用的是局部,但你可以把这个放到layout

<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。application.js中调用destroy_user_session_path的注销函数。

$(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();
  });
});
我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 %>

最新更新