概要
Pythonで、Flaskを使用してWebサイトを作成し、OAuth2認証でGoogleログインをしてみたのでまとめました。
GoogleログインをOAuth2で行うことで、こちらでユーザ登録機能や、パスワードなどを保持する必要なく、アプリケーションの作成を行うことができます。
OAuth2の仕組みに関しては、ほかで詳しく解説されてますので、そちらを確認してください。
本記事は、以下の記事の内容を参考に作成しております。
また、ソースコードはGitHubに格納しております。
Webサイトの概要
Webサイトの概要を説明します。
まずトップページに、Google Loginと書かれたリンクがあります。
このリンクをクリックすると、Googleの認証画面に遷移します。
こちらが、認証画面で、ログインする対象のGoogleアカウントを選択、またはログイン情報を入力します。
認証されると、Goolgleの情報から、名前、Emailアドレス、プロフィール画像を表示します。
Logoutボタンを押すと、トップの画面に戻ります。
以上がWebサイトの概要になります。
作成手順
OAuth2クライアントの生成
まずは、OAuth2で認証するためにOAuthクライアントを登録します。
登録するには、Googleアカウントが必要なので、ない方は登録してください。
OAuthクライアントの登録には、以下のURLにアクセスします。
OAuth同意画面で、外部を選択して、作成ボタンを押します。
アプリケーション名にアプリケーション名を入力し、画面下の保存を押下します。
アプリケーション名は、認証する際の画面に表示されるアプリケーション名で特に適当でかまいません。
保存すると、OAuthクライアントが生成されます。
クライアントIDと、クライアント シークレットは後で必要になりますので、控えておいてください。
OAuthクライアントの設定を行います。
認証情報より、認証情報を作成のOAuthクライアントIDを押下してください。
以下のように設定し、作成ボタンをクリックしてください。
- アプリケーションの種類:ウェブ アプリケーション
- 承認済みのJavaScript生成元:https://127.0.0.1:5000
- 承認済みのリダイレクトURI:https://127.0.0.1:5000/login/callback
以上でOAuthクライアントの設定は完了です。
Webサイトの作成
以下のGitHubよりソースコードをcloneします。
必要なモジュールをインストールします。
pyenvを使用している方は、以下のコマンドでインストールします。
pipenv install
pyenvを使用していない方は、pipでインストールします。
pip install -r requirements.txt
GOOGLE_CLIENT_ID = os.environ.get("GOOGLE_CLIENT_ID", None) GOOGLE_CLIENT_SECRET = os.environ.get("GOOGLE_CLIENT_SECRET",None)
python app.py
まとめ
FlaskでOAuth2認証を使用しGoogleログインを行いました。
Pythonでは、OAuthに関するライブラリが存在していることから、簡単に実装することができました。
また、OAuthを使用することで、
- 認証機構をクライアントアプリで構築する必要がない
- ユーザ管理、パスワード管理をする必要がない
などのメリットがあることがわかりました。
Google以外のFacebookやTwitterの認証や、別言語でOAuthを使用しての認証を試してみるのもよいかと思います。
コメント