Closed kkkkkkkkazuya closed 2 months ago
OAuthするにあたってのDB構成について
フロントエンドからのリクエスト
{ "grant_type": "OAUTH", "provider_name": "google", "provider_user_id": "google_user_id_12345", "token": "access_token_from_google", "email": "user@gmail.com" }
バックエンドでの処理 サーバー側でこのリクエストを受け取る。
ステップ1: dog_ownersテーブルの確認または登録 サーバーは、dog_ownersテーブルに、送信されたemail(例: user@gmail.com)が既に登録されているかどうかを確認
既存ユーザー: すでにdog_ownersに登録されている場合、そのユーザーのdog_owner_idを取得 新規ユーザー: dog_ownersにemailが存在しない場合は、新規レコードを作成してユーザーを登録
-- 既存のemailを確認 SELECT dog_owner_id FROM dog_owners WHERE email = 'user@gmail.com'; -- 新規の場合はdog_ownersにレコードを追加 INSERT INTO dog_owners (name, email, reg_at, upd_at) VALUES ('Google User', 'user@gmail.com', current_timestamp, current_timestamp) RETURNING dog_owner_id;
ステップ2: auth_dog_ownersテーブルにOAuth情報を登録 auth_dog_ownersテーブルに、このユーザーのOAuth認証情報を登録grant_type = 'OAUTH'であるため、emailやphone_numberのフィールドはNULLで問題ありません。
INSERT INTO auth_dog_owners (dog_owner_id, grant_type, login_at) VALUES (dog_owner_id_from_previous_step, 'OAUTH', current_timestamp);
ステップ3: oauth_providersテーブルにGoogle OAuth情報を登録 Google OAuthで取得したprovider_name(例: google)、provider_user_id(GoogleからのユーザーID)、token(アクセストークン)をoauth_providersテーブルに登録
INSERT INTO oauth_providers (auth_dog_owner_id, provider_name, provider_user_id, token, token_expiration, login_at) VALUES ( auth_dog_owner_id_from_previous_step, 'google', 'google_user_id_12345', 'access_token_from_google', current_timestamp + interval '1 hour', current_timestamp );
概要
OAuthするにあたってのDB構成について
構成
OAuthの大枠流れ
フロントエンドからのリクエスト
Google OAuth認証の手順
バックエンドでの処理 サーバー側でこのリクエストを受け取る。
ステップ1: dog_ownersテーブルの確認または登録 サーバーは、dog_ownersテーブルに、送信されたemail(例: user@gmail.com)が既に登録されているかどうかを確認
既存ユーザー: すでにdog_ownersに登録されている場合、そのユーザーのdog_owner_idを取得 新規ユーザー: dog_ownersにemailが存在しない場合は、新規レコードを作成してユーザーを登録
ステップ2: auth_dog_ownersテーブルにOAuth情報を登録 auth_dog_ownersテーブルに、このユーザーのOAuth認証情報を登録grant_type = 'OAUTH'であるため、emailやphone_numberのフィールドはNULLで問題ありません。
ステップ3: oauth_providersテーブルにGoogle OAuth情報を登録 Google OAuthで取得したprovider_name(例: google)、provider_user_id(GoogleからのユーザーID)、token(アクセストークン)をoauth_providersテーブルに登録
関連Issue
58
51