カテゴリ: Flask 更新日: 2025/12/26

FlaskでGoogleログインを導入する方法!OAuth2×外部認証を初心者でもわかりやすく解説

FlaskでGoogleログインを導入する方法!OAuth2×外部認証
FlaskでGoogleログインを導入する方法!OAuth2×外部認証

先生と生徒の会話形式で理解しよう

生徒

「FlaskでGoogleログインをつけたいのですが、どうやって始めたらいいのか全然わかりません。パスワードを自分で管理するのも怖いです……。」

先生

「そんなときに便利なのがOAuth2という仕組みですよ。Googleのアカウントで安全にログインできる方法です。」

生徒

「Googleのアカウントでログインできる仕組みって、どうやって動いているんですか?難しそうに感じます。」

先生

「実は仕組みを知るとそんなに難しくありません。これからFlaskでGoogleログインを導入する流れを順番に解説していきましょう!」

1. Googleログインとは?

1. Googleログインとは?
1. Googleログインとは?

Googleログインは、ユーザーが自分のGoogleアカウントを使って、他のWebアプリにログインできる仕組みです。FlaskのようなWebフレームワークでログイン機能を作るとき、パスワードを自分で保存する必要がなくなるため、安全性がとても高まります。

たとえば、あなたが作ったFlaskアプリで「メールアドレス」と「パスワード」を保存するとします。しかし、初心者が安全な保存方法を間違えると情報流出の危険があります。Googleログインを使えば、Flaskアプリはパスワードに触れず、Googleが本人確認をしてくれます。

初心者にもわかりやすい例として、次のように考えると理解しやすいです。

例え:ホテルに宿泊するとき、あなたが身分証明書のコピーをホテルに預ける必要はありません。身分証明書を見せて本人確認をしてもらうだけで大丈夫です。Googleログインでも同じで、Googleがあなたの本人確認を代わりに行い、Flaskのアプリは確認結果だけを受け取ります。

2. OAuth2とは?Googleログインの仕組みを支える技術

2. OAuth2とは?Googleログインの仕組みを支える技術
2. OAuth2とは?Googleログインの仕組みを支える技術

GoogleログインはOAuth2という仕組みを利用しています。OAuth2はインターネットで広く使われている認証方式で、ユーザーのパスワードをサイトに渡さずにログインできるようにする技術です。

OAuth2では、Googleが本人確認をしたあとに「この人は本人です」と示すデータ(アクセストークン)をFlaskアプリに返します。アクセストークンは、本人確認の証明書のようなものと考えるとわかりやすいです。

この仕組みによって、Flaskアプリは安全にユーザーを識別できます。

3. FlaskでGoogleログインを導入する流れ

3. FlaskでGoogleログインを導入する流れ
3. FlaskでGoogleログインを導入する流れ

FlaskでGoogleログインを導入するためには、次のような流れで処理が進みます。初心者でも理解しやすいように簡潔にまとめています。

  1. ユーザーが「Googleでログイン」ボタンを押す。
  2. FlaskアプリがユーザーをGoogleのログイン画面へ案内する。
  3. ユーザーがGoogleでログインする。
  4. GoogleがFlaskアプリへ「この人は本人です」という情報を返す。
  5. Flaskアプリがログイン済みとしてユーザー情報を保存する。

この流れを理解しておくと、コードの意味がよりよくわかるようになります。

4. FlaskでGoogleログインの準備

4. FlaskでGoogleログインの準備
4. FlaskでGoogleログインの準備

Googleログインを実装するためには、いくつかの準備が必要です。まずはGoogle Cloudで「OAuth2の認証情報」を作成し、FlaskアプリがGoogleと通信できるようにします。

さらに、Flask側ではOAuth2を簡単に扱えるライブラリとしてAuthlibを利用します。


pip install flask authlib

5. FlaskでGoogleログインを実装するサンプルコード

5. FlaskでGoogleログインを実装するサンプルコード
5. FlaskでGoogleログインを実装するサンプルコード

以下のコードは、FlaskでGoogleログインを導入する基本的なサンプルです。Google Cloudで取得したクライアントIDとクライアントシークレットを自分の値に置き換えて使います。


from flask import Flask, redirect, url_for, session
from authlib.integrations.flask_client import OAuth

app = Flask(__name__)
app.secret_key = "your_secret_key"

oauth = OAuth(app)
google = oauth.register(
    name="google",
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
    access_token_url="https://oauth2.googleapis.com/token",
    authorize_url="https://accounts.google.com/o/oauth2/auth",
    api_base_url="https://www.googleapis.com/oauth2/v1/",
    userinfo_endpoint="https://openidconnect.googleapis.com/v1/userinfo",
    client_kwargs={"scope": "openid email profile"},
)

@app.route("/")
def index():
    return '<a href="/login">Googleでログイン</a>'

@app.route("/login")
def login():
    redirect_uri = url_for("authorize", _external=True)
    return google.authorize_redirect(redirect_uri)

@app.route("/authorize")
def authorize():
    token = google.authorize_access_token()
    user = google.get("userinfo").json()
    session["user"] = user
    return f"ログインしました: {user['email']}"

if __name__ == "__main__":
    app.run(debug=True)

6. サンプルコードを初心者向けに丁寧に解説

6. サンプルコードを初心者向けに丁寧に解説
6. サンプルコードを初心者向けに丁寧に解説

このコードが何をしているのか、プログラミングに不慣れな人でも理解できるように細かく説明します。

  • oauth.register → Googleと通信するための設定。Googleのサイトへ案内したり、ユーザー情報を受け取る準備をします。
  • /login → Googleのログイン画面へジャンプさせる処理です。
  • /authorize → ログイン後にGoogleから戻ってくる場所。ここでユーザー情報を受け取ります。
  • session["user"] → Flaskが用意する「セッション」にユーザー情報を保存し、ログイン状態を維持します。

セッションとは、ユーザーがアプリを使っているあいだだけ情報を覚えておく箱のようなものです。

7. Googleログイン実装時の注意点

7. Googleログイン実装時の注意点
7. Googleログイン実装時の注意点

Googleログインを使うと便利ですが、安全に利用するためには次の点に気をつける必要があります。

  • secret_keyを絶対に外部に公開しないこと
  • GoogleのクライアントID・シークレットも大切に管理すること
  • HTTPSを使用すること(Googleログインでは安全な通信が必須です)
  • Google Cloudで設定したURLとFlaskのURLが一致しているか確認すること

これらを守ることで、Flaskアプリの安全性が高まり、安心してGoogleログインを利用できます。

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説