カテゴリ: Flask 更新日: 2026/01/03

PythonのFlaskアプリにOAuth2認証を導入する基本ステップまとめ!初心者でもわかる外部サービス連携の仕組み

FlaskアプリでOAuth2認証を導入する基本ステップまとめ
FlaskアプリでOAuth2認証を導入する基本ステップまとめ

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

生徒

「WebアプリにGoogleアカウントでログインできる機能って、どうやって作るんですか?」

先生

「FlaskアプリにOAuth2という仕組みを使うと、GoogleやFacebookなどの外部アカウントでログインできるようになります。」

生徒

「OAuth2って何ですか?難しそう…」

先生

「大丈夫ですよ。OAuth2は、鍵のような役割をするものだと考えるとイメージしやすいです。順番にわかりやすく説明していきますね。」

1. OAuth2とは?初心者にもわかる簡単な説明

1. OAuth2とは?初心者にもわかる簡単な説明
1. OAuth2とは?初心者にもわかる簡単な説明

OAuth2(オーオース・ツー)とは、他のサービスが持っているアカウント情報を使って、安全にログインや認証を行うための仕組みです。自分のWebアプリで、ユーザーのIDやパスワードを直接管理しなくてよい点が大きな特徴です。

たとえば、Webアプリに「Googleでログイン」というボタンがあり、それを押すとGoogleのログイン画面が表示されます。そこで本人確認が完了すると、「このユーザーは問題ありません」という合図だけがWebアプリに返ってきます。この確認作業を担当しているのがOAuth2です。

重要なのは、パスワードそのものはWebアプリ側には一切渡らないという点です。これにより、万が一アプリ側にトラブルがあっても、ユーザーの大切な情報が漏れにくくなります。

例えるなら、建物に入るときに社員証を警備員に見せるようなものです。警備員は「本人かどうか」だけを確認し、社員証の中身をコピーしたりはしません。OAuth2も同じ考え方で、安全性を保っています。

初心者向け:OAuth2の流れをイメージする簡単サンプル

以下は、OAuth2の考え方をイメージするための、とてもシンプルな疑似コードです。細かい処理は気にせず、「外部サービスに確認をお願いしている」点だけ押さえてください。


# ログインボタンが押されたら
def login():
    # 外部サービス(例:Google)に認証をお願いする
    return redirect("Googleのログイン画面")

# 認証が終わったあと
def callback():
    # 「このユーザーはOK」という結果だけを受け取る
    return "ログイン成功"

このように、OAuth2は「本人確認を外部に任せる仕組み」と考えると、初めてでも理解しやすくなります。

2. FlaskでOAuth2を使うために必要なライブラリ

2. FlaskでOAuth2を使うために必要なライブラリ
2. FlaskでOAuth2を使うために必要なライブラリ

PythonのFlaskでOAuth2ログイン(外部サービス連携の認証)を手早く実装するなら、Authlib(オースリブ)というライブラリを使うのが定番です。OAuth2は本来、リダイレクトやトークンのやり取りなど手順が多いのですが、Authlibがその面倒な部分をまとめて扱いやすくしてくれます。

まずはインストールから始めましょう。ターミナル(黒い画面)で、次のコマンドを実行します。


pip install Flask Authlib
初心者向け:インストールできたか確認するミニサンプル

「ちゃんと入ったのか不安…」という場合は、Pythonで読み込めるかだけ確認すると安心です。エラーが出なければOKです。


from authlib.integrations.flask_client import OAuth

print("Authlibの読み込みに成功しました")

Authlibは、GoogleやFacebookなどのOAuth2認証に必要な流れ(ログイン画面へ移動する処理や、認証後の情報を受け取る処理)を、Flaskで扱いやすい形に整えてくれます。まずは「Authlibを入れる=OAuth2を使う準備が整う」と覚えておくと分かりやすいです。

3. Google OAuth2をFlaskに組み込む基本ステップ

3. Google OAuth2をFlaskに組み込む基本ステップ
3. Google OAuth2をFlaskに組み込む基本ステップ

ここでは、Flaskアプリに「Googleでログイン」を付けるときの基本の流れを、コードと一緒に確認します。ポイントは、ユーザーをGoogleのログイン画面へ案内し、ログイン後にGoogleから「この人はログインしてOK」という許可(トークン)を受け取り、最後にユーザー情報を取り出すことです。

初心者の方は、まず「/login にアクセス → Googleに移動 → /authorize に戻ってくる」という往復がある、と押さえるだけでも理解しやすくなります。

初心者向け:全体の動きが分かる基本コード

以下は、Google OAuth2をFlaskに組み込む代表的なサンプルです。client_idclient_secretは、Google側の設定で発行されたものに置き換えて使います。


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

app = Flask(__name__)
app.secret_key = "ランダムな秘密の文字列"

oauth = OAuth(app)
google = oauth.register(
    name='google',
    client_id='ここにあなたのGoogleクライアントID',
    client_secret='ここにあなたのクライアントシークレット',
    access_token_url='https://accounts.google.com/o/oauth2/token',
    authorize_url='https://accounts.google.com/o/oauth2/auth',
    api_base_url='https://www.googleapis.com/oauth2/v1/',
    userinfo_endpoint='https://www.googleapis.com/oauth2/v1/userinfo',
    client_kwargs={'scope': 'openid email profile'},
)

@app.route('/')
def homepage():
    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()
    resp = google.get('userinfo')
    user_info = resp.json()
    session['user'] = user_info
    return f"こんにちは、{user_info['name']}さん!"

if __name__ == '__main__':
    app.run(debug=True)
初心者向け:コードの流れをやさしく分解
  • 1) トップページ(/):リンクを押すと/loginへ移動します。
  • 2) ログイン開始(/login)authorize_redirect()でGoogleのログイン画面へ案内します(ここが「外部サービス連携」の入口です)。
  • 3) 戻り先(/authorize):ログイン後、GoogleがこのURLへ戻してくれます。ここでauthorize_access_token()により許可情報を受け取り、userinfoから名前やメールなどを取得します。
  • 4) セッション保存session['user']に入れておくと、「ログイン中のユーザー」として扱いやすくなります。

まずはこの基本形を動かして、Googleログインの往復ができる状態を作るのが第一歩です。細かい意味が全部分からなくても大丈夫なので、「どのURLで何をしているか」を追いかける意識で読むとスッと入ってきます。

4. OAuth2導入に必要なGoogleの設定

4. OAuth2導入に必要なGoogleの設定
4. OAuth2導入に必要なGoogleの設定

このコードを使う前に、Google Cloud ConsoleでOAuth2の設定が必要です。ここは「Googleに、あなたのFlaskアプリを認証してもいい相手として登録する作業」だと思うと分かりやすいです。

  • Google Cloud Consoleにアクセス
  • 対象のプロジェクトを選び、「APIとサービス」→「認証情報」へ進む
  • 「OAuth 2.0クライアントID」を作成(種類は基本的に「ウェブアプリケーション」)
  • 「承認済みのリダイレクトURI」にhttp://localhost:5000/authorizeを追加
  • 発行されたクライアントIDとシークレットをPythonコードにコピペ
初心者向け:リダイレクトURIってなに?

リダイレクトURIは、Googleログインが終わったあとに戻ってくる先のURLです。Flask側の@app.route('/authorize')とセットで考えると理解しやすいです。ここが1文字でも違うと、ログインが失敗する原因になります。


# Google側に登録する戻り先URLの例(ローカルで動かすとき)
http://localhost:5000/authorize

この設定をすることで、GoogleがあなたのFlaskアプリに「このアプリへログイン結果を渡してOK」という許可を出してくれます。まずはローカル環境(localhost)で設定して、動作が確認できてから本番用のURLに切り替える流れが安心です。

5. コードの各部分をやさしく解説

5. コードの各部分をやさしく解説
5. コードの各部分をやさしく解説
  • app.secret_key:セッション情報を暗号化するためのカギです。安全な文字列にしましょう。
  • oauth.register():ここでGoogleのOAuth設定を登録しています。
  • authorize_redirect:Googleのログインページにユーザーをリダイレクト(移動)させます。
  • authorize_access_token():Googleからアクセストークン(認証の許可証)を受け取ります。
  • google.get('userinfo'):Googleのサーバーからユーザー情報を取得します。

このようにOAuth2では、ユーザーがログインしたあと、トークンという一時的な「鍵」を使って必要な情報を取得します。

6. セッションでユーザー情報を保持するとは?

6. セッションでユーザー情報を保持するとは?
6. セッションでユーザー情報を保持するとは?

sessionとは、ユーザーがログインしている状態を一時的に記録しておくための仕組みです。

たとえば、レストランで席に着いたときに渡される番号札のようなもので、誰が今この席にいるかを記録します。

この番号札(セッション)を見れば、「この人は〇〇さん」とアプリ側で分かるわけです。

7. ログイン後にユーザー情報を表示する方法

7. ログイン後にユーザー情報を表示する方法
7. ログイン後にユーザー情報を表示する方法

以下のようにして、ユーザー情報をページに表示することもできます。


@app.route('/profile')
def profile():
    user = session.get('user')
    if user:
        return f"ログイン中:{user['email']}"
    return redirect('/')

セッションにユーザー情報があれば、それを取り出して画面に表示することができます。

8. FlaskアプリにOAuth2を導入するメリット

8. FlaskアプリにOAuth2を導入するメリット
8. FlaskアプリにOAuth2を導入するメリット

OAuth2を使うことで、次のようなメリットがあります。

  • パスワードを自分のサーバーで扱わなくて済む:セキュリティ上とても安全です。
  • ログインが簡単になる:ユーザーはGoogleなどのアカウントでそのままログインできます。
  • 信頼性が高い:大手サービス(Googleなど)の認証を使えるので安心です。

9. 初心者が気をつけたいポイント

9. 初心者が気をつけたいポイント
9. 初心者が気をつけたいポイント
  • Googleの設定ミスに注意:リダイレクトURIが一致していないとログインできません。
  • 秘密鍵はコードにベタ書きしない:環境変数を使うのが望ましいです(今回の例では省略)。
  • URLがhttpのままだと警告が出ることがある:本番環境ではhttpsを使いましょう。

まとめ

まとめ
まとめ

PythonのFlaskアプリにOAuth2認証を導入する流れを学んだ今回の内容は、外部サービスと安全に連携するための基礎知識として非常に役立つものとなりました。特にGoogleアカウントを使ったログイン機能の仕組みは、初心者でも理解しやすく、FlaskとOAuth2を組み合わせることで、実践的な認証機能を簡単に実装できるという点が大きな魅力です。OAuth2という認証方式は、外部サービスが本人確認を代わりに行い、その結果をアプリ側へ返すため、自分のアプリがパスワードを直接管理する必要がなく、安全性と利便性の両方を高められます。とくにGoogleのような信頼性の高いサービスと連携することで、ユーザーに安心してログインしてもらえる環境を整えられることは、現代のWebアプリ開発において欠かせない技術となっています。 FlaskでOAuth2を使う際には「Authlib」という便利なライブラリを利用することで、複雑に見えるOAuthの仕組みをシンプルなコードで扱えるようになります。コードの流れとしては、まずOAuthの設定をアプリ内に登録し、ユーザーをGoogleのログイン画面にリダイレクトし、ログイン後にアクセストークンを受け取り、その情報を使ってユーザー情報を取得するというステップで進めていきます。このように一連の流れが明確で、動作を追いやすい点は、初心者がOAuth2を学ぶ入口としてとても良い構造になっているといえます。セッションにユーザー情報を保存すれば、ログイン後のページでも安全にユーザーの名前やメールアドレスを表示でき、より実用的なWebアプリとして成長させることができます。 また、Google Cloud ConsoleでクライアントIDやリダイレクトURIを設定する作業も重要なポイントです。この設定が正しくないと、認証画面が表示されなかったり、ログイン後にアプリへ戻ってこられなかったりするため、OAuth2の仕組みを理解しながら丁寧に設定することが求められます。一見複雑に見える設定ですが、一度流れをつかむと理解が深まり、他の外部サービス(GitHub、Facebook、LINEなど)にも応用できるようになります。 FlaskアプリにOAuth2認証を導入するメリットとして、安全性の高さやログインの簡略化、そして外部アカウントを使った信頼性の高い認証が挙げられます。自分のアプリでパスワードを管理する必要がないため、情報漏えいのリスクを減らしながらサービスを提供できます。また、ユーザーが普段から使い慣れたGoogleアカウントでログインできるため、登録の手間が省け、サービスへの導入障壁も下げられます。現代のWebアプリはセキュリティと利便性の両立が必要となるため、OAuth2はまさにその要件を満たす重要な認証方式といえるでしょう。 さらに、今回掲載したコード例を参考に、自分なりにログイン後の処理や追加機能を組み合わせることで、より実践的なFlaskアプリを作成できます。たとえば、プロフィール画面の作成、外部APIとの連携、ログアウト機能の実装など、OAuth2を起点としてさまざまな拡張が可能です。ここでは、理解を深めるために記事で使った構成と同じように、簡単なサンプルプログラムを再掲して振り返ります。

OAuth2導入のサンプルコード


@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['name']}さん"

このように、ログイン処理とユーザー情報の取得を短いコードで実現できる点は、FlaskとOAuth2の強みです。ユーザーがログインした状態はセッションに保持されるため、プロフィールページや限定機能へ自然にアクセスできるようになります。また、OAuth2は安全で拡張性の高い認証方式であり、さまざまなWebアプリやモバイルアプリで広く活用されています。今後、自分のFlaskアプリをより高度なものへ発展させていく際にも、今回学んだ認証の仕組みが大きな助けとなるでしょう。

先生と生徒の振り返り会話

生徒

「OAuth2ってむずかしそうだと思っていましたけど、Flaskでコードを書いてみると意外と分かりやすかったです!」

先生

「そうですね。流れをつかむととても扱いやすい仕組みですよ。Googleが本人確認をしてくれるので、安全にログイン機能を作れます。」

生徒

「ユーザー情報をセッションで管理できるのも便利でした。プロフィール画面とかも簡単に作れそうです!」

先生

「その通りです。OAuth2を覚えると、いろいろな外部サービスと連携できるようになりますし、アプリの幅がぐっと広がりますよ。」

生徒

「もっと発展させて、自分のアプリに本格的なログイン機能を追加してみたいと思いました!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

OAuth2とは何のために使われる仕組みですか?初心者にもわかる意味を知りたいです。

OAuth2とは、GoogleやFacebookなど外部サービスのアカウントを使って安全にログインするための仕組みです。アプリ側がパスワードを扱わずに本人確認を委ねられるため、安全性が高く、初心者が作るWebアプリでも安心してログイン機能を導入できます。
カテゴリの一覧へ
新着記事
New1
Flask
認証と認可の違いを整理しよう!Flaskで押さえるべき基礎概念
New2
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New3
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New4
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.5
Java&Spring記事人気No5
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.6
Java&Spring記事人気No6
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説