2010-05-23 31 views
1

我正在使用Facebook JS SDK與我的Rails應用程序進行單點登錄。我將Facebook example(位於「使用JavaScript SDK進行單一登錄」頁面底部)的php代碼翻譯成ruby。使用Facebook JS SDK和Rails循環登錄

這似乎工作得很好,但我注意到一個用戶在嘗試登錄時會不斷重定向。日誌是這樣的:

Processing UsersController#login (for X.X.X.X at 2010-05-22 17:25:55) [GET] 
Redirected to http://myapp.com/ 
Completed in 0ms (DB: 0) | 302 Found [http://myapp.com/login] 

(倍多條目,我的不幸用戶離開瀏覽器重定向在一個循環中)。

我的客戶端代碼包括與「auth.sessionChange」回調:

FB.Event.subscribe('auth.sessionChange', function(response) { 
    if (response.session) { 
    // A user has logged in, and a new cookie has been saved 
    window.location = "/login"; 
    } else { 
    // The user has logged out, and the cookie has been cleared 
    window.location = "/logout"; 
    } 
}); 

所以在我看來,這樣的事件在不斷射擊。雖然,我無法測試這個理論,因爲我無法在本地重新創建這個場景。

我不認爲它是鐵軌控制器。代碼在這裏只是:

def login 
    # if first time user create db entry 

    # now redirect back to where the user came from 
    begin 
    redirect_to :back 
    rescue ActionController::RedirectBackError 
    redirect_to root_url 
    end 
end 

有沒有人有什麼想法是怎麼回事?

+0

給我不愉快的用戶一個不同的Facebook帳戶登錄與沒有解決這個問題。 – nafe 2010-06-03 20:57:55

+0

讓他清除所有cookies並再試一次也沒有解決這個問題。 – nafe 2010-06-03 20:59:08

+0

在auth.sessionChange事件處理程序和登錄操作中關閉重定向代碼都不起作用... – nafe 2010-06-03 20:59:53

回答

1

對不起,我沒有你的答案,但我很好奇,如果你願意分享一些涉及的代碼?我不想使用Facebooker,OAuth也沒問題......但我更願意使用Javascript SDK ......但是我的技能很弱!我將不勝感激!也許還有助於理解他爲什麼循環...

另外... Cookie禁用也許?? ??

+0

嗨,我很高興分享rails代碼(http://pastebin.com/MEJNtRWH)。我認爲正在發生的控制流程:用戶點擊FB登錄按鈕;然後進行身份驗證,然後返回到myapp.com,它會通知Facebook cookie並使用它提取@fbhash。我們在sessionChange上有一個事件監聽器,它將瀏覽器重定向到myapp.com/login,它創建一個新的用戶模型(如果需要)並將瀏覽器重定向回原始頁面。有一些庫代碼不包含在嘗試使用會話對象或@fbhash登錄用戶的pastebin中。 – nafe 2010-06-03 20:54:11

+0

@nafe我想使用你的代碼,但我沒有在你說的步驟:「確保它在init時(在config/initializers中)加載」。這是如何完成的? – 2010-10-16 14:44:23

+0

@Jonathan在創建yml文件之後,在config/initializers /中創建一個新文件「load_facebook.rb」。它只是一個像FB_CONFIG = YAML.load_file(「#{RAILS_ROOT} /config/facebook.yml」)的線索[RAILS_ENV] – nafe 2010-10-27 10:03:26