簡體   English   中英

如何在使用devise + omniauth + rails 3時清除facebook會話和cookie?

[英]How to clear facebook session and cookie when using devise + omniauth + rails 3?

我實現了帳戶創建和登錄使用facebook連接使用devise + omniauth on rails 3.但是,我的問題是在用戶注銷時清除facebook會話和cookie。 目前,當用戶退出時,似乎清除當前會話。 但是,當用戶再次登錄時,由於facebook cookie,它會自動登錄用戶。 我想使用sign_out方法來清除cookie,這樣當用戶下次嘗試登錄時,它會要求用戶使用facebook登錄。

現在我使用默認設計路線“devise_for:users”。 我應該通過創建“類SessionsController <Devise :: SessionsController”來覆蓋它嗎? 如果是這樣,我是否需要同時編寫create和destroy方法? 在destroy方法中,如何准確清除fb cookie?

任何幫助將非常感激!

為了清除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>

然后,我將logout鏈接綁定到FB.logout函數,該函數調用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 %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM