🚀 OAuth機能
OAuth機能は、OAuth認証フロー用の完全な、事前構成された機能を提供します。これらの機能はスキーマとルートを組み合わせて、OAuth開始とコールバック処理用のすぐに使用できるエンドポイントを作成します。
🎯 概要
OAuth機能は以下の目的で設計されています:
- 完全なOAuthワークフローを提供 - プロバイダーベースのログイン用
- スキーマとルートを組み合わせ - 検証されたリクエスト処理のため
- ドライバー/ブロックと統合 - 完全なOAuthフローをオーケストレーション
📋 機能構造
各OAuth機能は一貫した構成パターンに従います:
- スキーマ: 入力データとパラメータを検証
- ルート: ブロック構成を含むHTTPエンドポイントを提供
- 構成:
composeを使用してスキーマとルートを組み合わせ
🔧 利用可能なOAuth機能
googleOAuthFeature
スキーマ検証とルーティングを含むGoogle OAuth認証機能。
目的: Google OAuthフローを開始し、プロバイダー同意にリダイレクトします。
構成:
- スキーマ:
googleOauthSchema— クエリパラメータ(fp、purpose、redirectUrl、typeId)を検証し、空のリクエストボディを強制 - ルート:
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フローを完了します。
構成:
- ルート:
googleOAuthCallbackRoute— Google 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— クエリパラメータ(purpose、redirectUrl、typeId)を検証し、空のリクエストボディを強制 - ルート:
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— クエリパラメータ(fp、purpose、redirectUrl、typeId)を検証し、空のリクエストボディを強制 - ルート:
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フローを完了します。
構成:
- ルート:
lineOAuthCallbackRoute— LINE 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
レスポンス: 認証トークンでクライアントアプリケーションにリダイレクト
ハンドラープロセス:
- LINE OAuthコールバックを認証
- ログイン状態を抽出および検証
- ユーザーアイデンティティを検索または作成
- 認証トークンを生成
- クライアントアプリケーションにリダイレクト
エラーハンドリング:
400- 無効な入力または欠落フィールド404- アイデンティティが見つかりません(ログインフロー用)500- データベースエラーまたはOAuth失敗
主な機能:
- 完全なOAuthコールバック処理
- アイデンティティ解決または作成
- トークン生成とセキュアなリダイレクト
- 包括的なエラーハンドリング