【Python】FlaskとOAuthでGoogleログインする

python Python

概要

Pythonで、Flaskを使用してWebサイトを作成し、OAuth2認証でGoogleログインをしてみたのでまとめました。

GoogleログインをOAuth2で行うことで、こちらでユーザ登録機能や、パスワードなどを保持する必要なく、アプリケーションの作成を行うことができます。

OAuth2の仕組みに関しては、ほかで詳しく解説されてますので、そちらを確認してください。

本記事は、以下の記事の内容を参考に作成しております。

Create a Flask Application With Google Login – Real Python
In this step-by-step tutorial, you'll create a Flask application that lets users sign in using their Google login. You'l...

また、ソースコードはGitHubに格納しております。

GitHub - remix-yh/flask-google-login
Contribute to remix-yh/flask-google-login development by creating an account on GitHub.

Webサイトの概要

Webサイトの概要を説明します。

まずトップページに、Google Loginと書かれたリンクがあります。

このリンクをクリックすると、Googleの認証画面に遷移します。

こちらが、認証画面で、ログインする対象のGoogleアカウントを選択、またはログイン情報を入力します。

 

認証されると、Goolgleの情報から、名前、Emailアドレス、プロフィール画像を表示します。

Logoutボタンを押すと、トップの画面に戻ります。

以上がWebサイトの概要になります。

作成手順

OAuth2クライアントの生成

まずは、OAuth2で認証するためにOAuthクライアントを登録します。

登録するには、Googleアカウントが必要なので、ない方は登録してください。

OAuthクライアントの登録には、以下のURLにアクセスします。

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure ...

 

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します。

GitHub - remix-yh/flask-google-login
Contribute to remix-yh/flask-google-login development by creating an account on GitHub.

必要なモジュールをインストールします。

pyenvを使用している方は、以下のコマンドでインストールします。

pipenv install

pyenvを使用していない方は、pipでインストールします。

pip install -r requirements.txt
app.pyの以下のNone部分に、先ほど控えた、クライアントIDと、クライアント シークレットを入力します。
または、環境変数に設定する処理を追加します。
GOOGLE_CLIENT_ID = os.environ.get("GOOGLE_CLIENT_ID", None)
GOOGLE_CLIENT_SECRET = os.environ.get("GOOGLE_CLIENT_SECRET",None)
app.pyを実行します。
python app.py
https://127.0.0.1:5000/ にアクセスし、以下の画面が表示される方は、証明書問題を無視して、表示してください。httpsでループバックでアクセスしており、証明書が登録されてませんので表示されてます。
その後、トップ画面が表示されればOKです。

まとめ

FlaskでOAuth2認証を使用しGoogleログインを行いました。

Pythonでは、OAuthに関するライブラリが存在していることから、簡単に実装することができました。

また、OAuthを使用することで、

  • 認証機構をクライアントアプリで構築する必要がない
  • ユーザ管理、パスワード管理をする必要がない

などのメリットがあることがわかりました。

Google以外のFacebookやTwitterの認証や、別言語でOAuthを使用しての認証を試してみるのもよいかと思います。

コメント