2016-10-19 4 views
0

フロントエンドでAngularJSを使用し、サーバー側でPython with Flaskを使用してWebアプリケーションを構築しています。私はgoogle developers siteで利用可能なドキュメントに続いてOpenID/OAuthログイン機能を実装しようとしています。私は最初にサーバー側のコードを構築することから始まりました(Postmanを使ってテストしたところ、すべてうまく動作しました)、フロントエンドで作業を始めました。さて、私は、この機能を追加するために私が従ったデザインが本当に悪いと感じています。以下は、私が直面しています問題です:デザイン:AngularJSとFlaskを使用したGoogle OAuth

gAuth: それが呼び出されます私のフラスコアプリ内の関数である

をグーグルのOAuthドキュメント以下は、私は私のサーバー側は、このようにやや流れのセットアップを持っていますユーザーがGoogleのsignInボタンをクリックしたときのAngularのGETリクエスト

Google認定エンドポイントにGETリクエストを送信して認証コードを取得します。このリクエストに対する応答には、Googleログインページを表示するHTMLコードを持つテキストフィールドがあります。これをAngularに戻します(この関数が呼び出された場所であるためです)。 Angularはブラウザ上でこれをレンダリングし、ユーザーが資格情報を入力するようにします。ユーザーが資格情報を入力して自分のアプリケーションを認証すると、私はGoogle OAuthに使用しているredirect_URIなので、GH要求を使用して requestToken GETリクエストを使用して認証コードを送信します。この時点で、私はAngularから完全に切り詰められています。 requestTokenは、認証コードを使ってGoogleのトークンエンドポイントにPOSTリクエストを送信し、id_tokenと交換します。さて、requestTokenはid_tokenを持っていて、それがどうしているのかを行います。

私はrequestToken関数から '1'の値を返していますが、これはrequestTokenへのリクエストが行われた場所であるため、Googleコードに移動します。

問題は、フロントエンドにすべてがOAuthでうまくいったことを知らせることができ、ユーザーをホームページにリダイレクトする必要があることです。私はrequestTokenの戻り値をAngularにします。私はそれが可能かどうか尋ねたいですが、私の常識はそれが不可能であると言います。しかし、FlaskからAngularにリクエストを送信できる方法があるかどうかは疑問です。どんな助けでも大歓迎です。

答えて

0

だから私はこの問題を回避する方法を見つけました。認証が成功した後、ユーザーはホームページにリダイレクトする必要があります。したがって、フロントエンドに応答を送る必要はありません、私はFlask自体からホームページのURLにリダイレクトできます。認証に失敗すると、ユーザーはエラーページにリダイレクトされ、エラーメッセージが表示され、ログインページにリンクします。これは今のところ私のために働く。

とにかく、ありがとうございます。

0

私は手動で実装しました。 lib:Satellizerとサーバ実装(Pythonの例についてはdocsを参照)を使用する準備ができています。

0

Firebase Authentication tutorial for App Engine Pythonを使用してください。 Flaskバックエンドを使用します。フロントエンドのロジックはかなり基本的ですが、探しているものを正確に提供するだけでなく、複数の認証プロバイダを一度に簡単に接続できるという利点があります。

関連する問題