2014-03-12 89 views
1

我正在構建一個使用Rails 4附帶的Turbolinks內容的Rails應用程序。我也嘗試使用Google+登錄按鈕進行用戶驗證。Google+登錄Turbolinks

我有一切工作,除了在一種情況下: 如果用戶在登錄之前訪問多個頁面,則Google +登錄過程不起作用。基本上,Turbolinks的魔法正在打破Google+登錄按鈕。 (如果用戶馬上登錄,一切正常)

這就是說,我可以看到問題似乎在哪裏。當google + js api加載時,它會將隱藏的iframe附加到html文檔的正文。當渦輪鏈接加載另一頁時,這會被吹走。我敢打賭,這個iframe是完成Google+登錄過程所必需的。

有沒有人穿過類似的橋樑?我不知道如何防止turbolinks去除iframe。另一種方法可能是讓Google API重新初始化,但Google Plus文檔中沒有提及此類內容。

感謝您的任何見解!

回答

2

我與Facebook login buttonBugherd sidebar有同樣的問題。
您需要在每個頁面上重新加載組件:獲取和頁面:更改事件。

這裏是僞代碼,我使用Facebook登錄:

$(document) 
    .on('page:fetch', saveFacebookRoot) 
    .on('page:change', restoreFacebookRoot) 

我認爲你幾乎可以做同樣的思考與Google+的iframe中。

+0

感謝您的提示,不幸的是,沒有愛。當我重新加載特殊的iFrame時,它不起作用。此外,谷歌API向控制檯吐出一個錯誤:「未知的RPC服務:oauth2relayReady:#####」 –

+0

它的工作原理! - 更多戳後,我能夠得到這個工作。我仍然在控制檯中出現奇怪的錯誤。另外,一旦我登錄,應用程序會將另一個iframe添加到dom中。第二個iframe在正常情況下不會發生......我真的很感激這個幫助,但我想我會嘲笑turbolinks - 解決方案有點太脆弱了。 –