newapi-check — Linux.do OAuth2 統合サンプル

Web

概要

このリポジトリは「Linux.do OAuth2 ログイン」の統合例を示す FastAPI ベースのサンプルプロジェクトです。OAuth2 の認可コードフローで access token と refresh token を取得・更新し、取得したトークンでユーザー情報を取得する仕組みを実装しています。加えて、毎日ユーザーが1つだけ受け取れる交換コード(redeem code)の付与・履歴管理・一括インポート機能を備え、美しい Web UI と Swagger による API ドキュメントを提供します。非同期 I/O(httpx、aiosqlite)と SQLModel によるデータ操作でレスポンシブな動作を実現しています。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 0
  • ウォッチャー数: 6
  • コミット数: 9
  • ファイル数: 20
  • メインの言語: Python

主な特徴

  • 完全な OAuth2 認可コードフローの実装
    認可コード取得 → access token 取得 → refresh token による更新、という一般的なフローを具体的に示しています。開発者が OAuth2 を組み込む際の参照として使えます。

  • 毎日1つ受け取れる交換コード機能(Redeem Codes)
    各ユーザーが日に1回だけ受け取れる仕組みを提供。受け取り履歴を自動記録し、不正受け取り防止のロジックを含みます。さらに CSV 等での一括インポート機能で運用管理がしやすくなっています。

  • 非同期でスケーラブルな実装スタック
    FastAPI + httpx(非同期 HTTP) + SQLModel + aiosqlite により、IO 待ちを効率化。uvicorn を用いた ASGI サーバで高速に動作します。

  • 使いやすい開発環境とドキュメント
    uv を用いたパッケージ管理、pydantic-settings による設定管理、Swagger UI による API ドキュメントで開発/検証が容易です。

技術的なポイント

このプロジェクトはモダンな Python 非同期スタックを活かした設計が特徴です。FastAPI の依存注入と経路ハンドラで OAuth2 のフローを整理し、httpx の非同期クライアントで外部の認証サーバー(Linux.do)と通信します。トークンのライフサイクル管理(取得・保存・更新)はアプリケーション側で扱いやすい抽象化が行われており、refresh token を使った自動更新のサンプルコードが含まれます。データ永続化は SQLModel(Pydantic + SQLAlchemy ライク)を採用し、軽量な SQLite(aiosqlite)で非同期 DB アクセスを実現。これによりスキーマ定義が型安全になり、開発時のエラー検出が容易です。設定管理には pydantic-settings を使い、環境変数や .env による安全な機密情報管理が可能です。加えて、交換コード(redeem codes)のロジックは一意制約と日付チェックにより「1ユーザー1日1回」を担保し、受け取り履歴のトランザクション設計によって不整合を防止します。開発運用面では Swagger UI による API の即時確認、uv による軽量パッケージ管理、uvicorn による ASGI 実行でローカル検証からデプロイまでスムーズに繋がる点が魅力です。セキュリティ面ではトークンの保護(サーバサイド保存や HTTPS 必須)、CORS 設定、アクセストークンの適切なスコープ制御など実運用を意識した注意点も示唆されています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .env.example: 環境変数のサンプル(クライアントID/シークレットや DB パスの例)
  • .gitignore: Git 管理除外設定
  • .python-version: 推奨 Python バージョン(3.12 など)
  • README.md: プロジェクトの説明と起動手順
  • REDEEM_CODES_README.md: 交換コードに関する運用やフォーマット説明

その他の主なファイル(想定される構成と役割):

  • app/main.py: FastAPI アプリのエントリーポイント(ルーティング/ミドルウェア設定)
  • app/auth.py: OAuth2 フローとトークン管理ロジック
  • app/routes/*.py: 認証、ユーザー情報、redeem コード取得などの API ハンドラ群
  • app/models.py: SQLModel による DB モデル定義(ユーザー、トークン、redeem コード、履歴)
  • app/schemas.py: Pydantic スキーマ(リクエスト/レスポンス定義)
  • app/db.py: データベース接続と初期化処理(aiosqlite)
  • app/services/redeem_service.py: 交換コードの付与や履歴保存のビジネスロジック
  • app/config.py: pydantic-settings を使った設定管理
  • requirements.txt / pyproject.toml: 依存管理(uv を利用するための設定ファイル)
  • scripts/import_redeem_codes.py: 交換コード一括インポート用スクリプト
  • static/, templates/: Web UI 用の静的ファイルとテンプレート(美しい UI を実現)
  • docs/: 追加の設計メモや運用手順

…他 15 ファイル

まとめ

OAuth2 と非同期 DB を組み合わせた実践的なサンプルで、認証連携と運用機能の両方を学べる良リポジトリ。

リポジトリ情報:

READMEの抜粋:

Linux.do OAuth2 登录集成示例

这是一个使用 FastAPI 集成 Linux.do OAuth2 认证的示例项目,使用 uv 作为包管理工具。

功能特性

  • 完整的 OAuth2 授权流程实现
  • 使用授权码换取 access token
  • 使用 refresh token 刷新 access token
  • 获取用户信息
  • 每日兑换码领取功能 🎁
    • 每个用户每天可领取一个兑换码
    • 自动记录领取历史
    • 支持批量导入兑换码
  • 美观的 Web 界面
  • 完整的 API 文档(Swagger UI)

技术栈

  • Python 3.12+
  • FastAPI - 现代、快速的 Web 框架
  • SQLModel - SQL 数据库 ORM
  • SQLite/aiosqlite - 异步数据库
  • httpx - 异步 HTTP 客户端
  • pydantic-settings - 配置管理
  • uvicorn - ASGI 服务器
  • uv - 快速的 Python 包管理器

快速开始

1. 安装依赖