2012-07-26 96 views
3

我試圖讓我的註銷按鈕從基於railscast#360中顯示的說明註銷應用程序和Facebook。當我點擊它時,應用程序似乎要註銷,但我的Facebook會話仍然存在。每五次一次,用戶註銷Facebook。我懷疑這跟在調用FB.logout()函數時未被銷燬的facebook cookie有關,因爲當我手動刪除該cookie時,用戶將從Facebook註銷。也許這是一個時間問題,因爲這是異步的?有什麼建議麼?下面是相關代碼:Omniauth-Facebook並不總是註銷用戶

application.html.erb

<div id="fb-root"></div> 
    <script> 

    window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : '(**myappid**)', // App ID 
      status  : true, // check login status 
      cookie  : true // enable cookies to allow the server to access the session 
     }); 

     $('#sign_in').click(function(e) { 
      e.preventDefault(); 
      return FB.login(function(response) { 
       if (response.authResponse) { 
        return window.location = '/auth/facebook/callback'; 
       } 
      }); 
     }); 

     return $('#sign_out').click(function(e) { 
      FB.getLoginStatus(function(response) { 
       if (response.authResponse) { 
        return FB.logout(); 
       } 
      }); 
      return true; 
     }); 
    }; 
    </script> 

sessions_controller.rb

class SessionsController < ApplicationController 

     def create 
     user = User.from_omniauth(env["omniauth.auth"]) 
     session[:user_id] = user.id 
     redirect_to root_url 
     end 

     def destroy 
     session[:user_id] = nil 
     redirect_to root_url 
     end 
    end 

回答

2

通過增加固定的:

def destroy 
    session[:user_id] = nil 
    sleep 3 
    redirect_to root_url 
    end 

到會議控制器

+0

不,它不會註銷。一旦我們登錄,我們必須打開facebook.com並執行登出登出。 – rAzOr 2014-10-14 13:07:30