2016-10-19 18 views
0

我正在構建一個Web應用程序,在前端使用AngularJS,在服務器端使用Flask使用Python。我試圖按照google developers site上提供的文檔實現OpenID/OAuth登錄功能。我首先構建了服務器端代碼(在使用Postman進行測試時一切正常),並開始在前端工作。現在,我有一種感覺,那就是我加入這個功能的設計非常糟糕。下面是我面臨的問題:設計:使用AngularJS和Flask的Google OAuth

繼谷歌OAuth的文檔,我已經安裝在我的服務器端有些流是這樣的:

gAuth: 這是我的瓶的應用程序的功能會被調用當用戶點擊Google登錄按鈕時,通過來自Angular的GET請求。

它向Google授權端點發送GET請求以獲取授權碼。對此請求的回覆中有一個文本字段,其中包含一個顯示Google登錄頁面的HTML代碼。我將這個返回給Angular(因爲這是從這個函數被調用的地方)。然後Angular在瀏覽器上呈現這些信息,以供用戶輸入憑據。一旦用戶輸入憑證並授權我的應用程序,Google就會使用GET請求將驗證碼發送到我的應用程序requestToken中的另一個功能,因爲那是我用於Google OAuth的redirect_URI。此時,我完全被Angular截斷了。現在,requestToken使用授權碼向Google的令牌端點發送POST請求,以便將其交換爲id_token。現在requestToken具有id_token,並執行它應該做的事情。

我從requestToken函數返回'1'的值,但是這是谷歌代碼,因爲這是requestToken的請求來自的地方。

現在,問題是我怎麼讓前端知道一切正常與OAuth和用戶必須重定向到主頁。我想讓requestToken的返回值轉到Angular。我想問問這是否可能,但我的常識說這是不可能的。但是,我想知道是否有方法可以將請求從Flask發送到Angular。任何幫助深表感謝。

回答

0

所以...我找到了解決此問題的方法。認證成功後,用戶必須重定向到主頁。因此,不需要將響應發送到前端,我可以重定向到Flask本身的主頁的url。如果認證失敗,用戶將被重定向到一個錯誤頁面,該頁面顯示錯誤消息並鏈接到登錄頁面。截至目前,這對我很有用。

無論如何,謝謝你的回覆。

0

我放棄了手動執行。有一個準備使用lib:Satellizer以及服務器實現(對於Python示例請參閱文檔)。