2015-07-12 46 views
2

我使用的是django 1.8.3和django-allauth 0.21.0,我希望用戶能夠使用例如他們的Google帳戶不會離開網頁。原因是他們登錄的網頁上有一些有價值的數據,需要在登錄後發佈。我已經使用本地帳戶創建工作正常工作,但我在社交方面遇到了問題因爲許多社交網絡將用戶引導到單獨的頁面以請求許可等。理想情況下,我將在我的頁面上發生一種模式,所有這些都會在身份驗證成功後關閉。在不離開頁面的情況下使用django-allauth的社交登錄

我現在可以想到的唯一可能的(雖然不是理想的)解決方案是強制認證頁面在另一個選項卡中打開(例如,在鏈接中使用target =「_ blank」),然後提示用戶一旦在另一個選項卡中完成身份驗證,就可以在原始窗口中點擊返回的內容。

但是,這裏的問題是,我不能想出一種方法讓原始頁面知道哪個帳戶剛剛由以前的匿名用戶創建,而沒有讓他們刷新頁面,這會導致重要的數據需要張貼丟失。

有沒有人有任何關於如何完成上述兩種解決方案之一的想法?

+0

相關:http://stackoverflow.com/questions/16162108/implementing-ajax-requests-response-with-django-allauth –

+0

@GlynJackson是的,我實際上用這個問題的一些信息來實現本地註冊/登錄的東西(我有工作),但我很難從這個跳轉到社交。如果你指的是Pennersr說我「運氣不好」,我還沒準備好輕易放棄! –

+1

這不僅僅是本地存儲的規範用例嗎?根據數據的性質,yiu也可以將其編碼到OAuth舞蹈中保存的'code'參數中。 – pinoyyid

回答

1

我最終通過使用Django的會話框架解決了這個問題。事實證明,會話ID是由django-allauth自動通過oauth過程傳遞的,因此在登錄完成後,存儲在request.session中的任何內容都可以在另一端訪問。

0

一種選擇是主窗體在新窗口中彈出社交身份驗證,然後使用AJAX來查詢社交身份驗證是否已完成。只要你對這個性能特徵很好(這會影響你的服務器),那麼這可能是最簡單的解決方案。

+0

這聽起來像它可以工作我,但我不知道從哪裏開始實施這樣的事情。你介意編輯你的答案以提供更多的信息,即一些粗略的代碼讓AJAX確定社交認證是否在另一個窗口中完成? –

相關問題