メインコンテンツまでスキップ
バージョン: 0.9.0 (最新)

🚀 OAuth機能

OAuth機能は、OAuth認証フロー用の完全な、事前構成された機能を提供します。これらの機能はスキーマとルートを組み合わせて、OAuth開始とコールバック処理用のすぐに使用できるエンドポイントを作成します。


🎯 概要

OAuth機能は以下の目的で設計されています:

  • 完全なOAuthワークフローを提供 - プロバイダーベースのログイン用
  • スキーマとルートを組み合わせ - 検証されたリクエスト処理のため
  • ドライバー/ブロックと統合 - 完全なOAuthフローをオーケストレーション

📋 機能構造

各OAuth機能は一貫した構成パターンに従います:

  • スキーマ: 入力データとパラメータを検証
  • ルート: ブロック構成を含むHTTPエンドポイントを提供
  • 構成: composeを使用してスキーマとルートを組み合わせ

🔧 利用可能なOAuth機能

googleOAuthFeature

スキーマ検証とルーティングを含むGoogle OAuth認証機能。

目的: Google OAuthフローを開始し、プロバイダー同意にリダイレクトします。

構成:

  • スキーマ: googleOauthSchema — クエリパラメータ(fppurposeredirectUrltypeId)を検証し、空のリクエストボディを強制
  • ルート: googleOAuthRoute — Google OAuth開始を処理

使用例:

import { features } from '@nodeblocks/backend-sdk';


// With database (handlers may need dataStores):
app.use('/api', defService(partial(features.googleOAuthFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/auth/oauth/google


googleOAuthCallbackFeature

コールバック処理用のルーティングを含むGoogle OAuthコールバック機能。

目的: プロバイダーコールバックを認証し、ログイン状態を検証し、最終リダイレクトを実行してOAuthフローを完了します。

構成:

使用例:

import { features } from '@nodeblocks/backend-sdk';


// With database (handlers may need dataStores):
app.use('/api', defService(partial(features.googleOAuthCallbackFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/auth/oauth/google/callback


twitterOAuthFeature

スキーマ検証とルーティングを含むTwitter OAuth認証機能。

目的: Twitter OAuthフローを開始し、プロバイダー同意にリダイレクトします。

構成:

  • スキーマ: twitterOauthSchema — クエリパラメータ(purposeredirectUrltypeId)を検証し、空のリクエストボディを強制
  • ルート: twitterOAuthRoute — Twitter OAuth開始を処理

使用例:

import { features } from '@nodeblocks/backend-sdk';

// With database (handlers may need dataStores):
app.use('/api', defService(partial(features.twitterOAuthFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/auth/oauth/twitter


twitterOAuthCallbackFeature

コールバック処理用のルーティングを含むTwitter OAuthコールバック機能。

目的: プロバイダーコールバックを認証し、ユーザーを検証し、最終リダイレクトを実行してOAuthフローを完了します。

構成:

  • ルート: twitterOAuthCallbackRoute — Twitter OAuthコールバック検証とユーザー処理を処理

使用例:

import { features } from '@nodeblocks/backend-sdk';

// With database (handlers may need dataStores):
app.use('/api', defService(partial(features.twitterOAuthCallbackFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/auth/oauth/twitter/callback


lineOAuthFeature

スキーマ検証とルーティングを含むLINE OAuth認証機能。

目的: LINE OAuthフローを開始し、プロバイダー同意にリダイレクトします。

構成:

  • スキーマ: lineOauthSchema — クエリパラメータ(fppurposeredirectUrltypeId)を検証し、空のリクエストボディを強制
  • ルート: lineOAuthRoute — LINE OAuth開始を処理

使用例:

import { features } from '@nodeblocks/backend-sdk';

// Direct usage:
app.use('/api', defService(features.lineOAuthFeature));

// With database (handlers may need dataStores):
app.use('/api', defService(partial(features.lineOAuthFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/auth/oauth/line

クエリパラメータ:

  • fp: string (required) — デバイスフィンガープリント識別子
  • purpose: 'oauth-login' | 'oauth-signup' (required) — OAuthフロー目的
  • redirectUrl: string (required) — クライアントリダイレクト先
  • typeId: string (required) — サインアップ用のアイデンティティタイプ識別子

レスポンス: LINE OAuth認証ページにリダイレクト(302)

主な機能:

  • すべてのクエリパラメータのスキーマ検証
  • 状態管理用のワンタイムトークン生成
  • LINE OAuthドライバーとの統合
  • ログインとサインアップの両方のフローをサポート

lineOAuthCallbackFeature

コールバック処理用のルーティングを含むLINE OAuthコールバック機能。

目的: プロバイダーコールバックを認証し、ログイン状態を検証し、最終リダイレクトを実行してOAuthフローを完了します。

構成:

使用例:

import { features } from '@nodeblocks/backend-sdk';

// Direct usage:
app.use('/api', defService(features.lineOAuthCallbackFeature));

// With database (handlers may need dataStores):
app.use('/api', defService(partial(features.lineOAuthCallbackFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/auth/oauth/line/callback

レスポンス: 認証トークンでクライアントアプリケーションにリダイレクト

ハンドラープロセス:

  1. LINE OAuthコールバックを認証
  2. ログイン状態を抽出および検証
  3. ユーザーアイデンティティを検索または作成
  4. 認証トークンを生成
  5. クライアントアプリケーションにリダイレクト

エラーハンドリング:

  • 400 - 無効な入力または欠落フィールド
  • 404 - アイデンティティが見つかりません(ログインフロー用)
  • 500 - データベースエラーまたはOAuth失敗

主な機能:

  • 完全なOAuthコールバック処理
  • アイデンティティ解決または作成
  • トークン生成とセキュアなリダイレクト
  • 包括的なエラーハンドリング