立ち飲みドットコム・電話番号認証仕様書
立ち飲みドットコムでは、不正な複数アカウントによる評価投稿を防止し、 1人につき適正な評価を行える環境を作るため、 Firebase Authenticationを利用したSMS電話番号認証を採用します。
| 基本目的 |
電話番号認証は、主に
5段階評価機能の不正利用防止
を目的として使用します。 原則として、 電話番号認証済みのユーザーのみ評価機能を利用可能 とします。 |
|---|---|
| 認証方式 |
電話番号認証には
Firebase Authentication
のSMS認証を使用します。 ユーザーが携帯電話番号を入力すると、 FirebaseからSMSで6桁の認証コードを送信します。 正しい認証コードが入力された場合のみ、 WordPress側へ認証済み情報を保存します。 |
| 認証フロー |
WordPressへログイン ↓ 評価機能を利用 ↓ 電話番号未認証の場合は認証画面を表示 ↓ 携帯電話番号を入力 ↓ SMS認証コード送信 ↓ 6桁の認証コード入力 ↓ Firebase認証成功 ↓ WordPress側で電話番号重複確認 ↓ 問題がなければ認証情報を保存 ↓ 電話番号認証済み |
| 1電話番号 1アカウント |
同一電話番号を、
複数のWordPressユーザーで使用することはできません。 すでに別のユーザーが同じ電話番号で認証済みの場合は、 「この電話番号は別のユーザーアカウントで認証済みです」 と表示し、認証を完了させません。 |
| WordPress保存情報 |
電話番号認証完了時には、
WordPressのユーザーメタへ以下の認証情報を保存します。 _tn_phone_verified _tn_phone_hash _tn_phone_last4 _tn_phone_verified_at _tn_firebase_uid それぞれ主に以下の用途で使用します。 _tn_phone_verified 電話番号認証済み判定 _tn_phone_hash 同一電話番号の重複登録防止 _tn_phone_last4 認証済み電話番号の確認用末尾4桁 _tn_phone_verified_at 電話番号認証日時 _tn_firebase_uid Firebase Authentication側のユーザーUID |
| 電話番号本体 |
WordPressユーザーメタの
tel
は、通常の会員情報として保存する電話番号です。 電話番号認証用の情報とは別管理とします。 そのため、 電話番号認証をリセットする場合でも、 原則として「tel」は削除しません。 |
| 認証済み判定 |
WordPress側では、
_tn_phone_verified
等の認証情報を基に、
ユーザーが電話番号認証済みかどうかを判定します。 Firebase側の認証ユーザーを削除しただけでは、 WordPress側に認証記録が残っている場合があります。 |
| 電話番号認証 リセット |
テストや管理上の理由により、
特定ユーザーの電話番号認証だけを初期状態へ戻す場合は、
Firebase側とWordPress側の両方をリセット
します。 WordPress会員そのもの、 メールアドレス、 通常の会員情報は削除しません。 |
| Firebase側 リセット |
Firebase Consoleから、 Authentication ↓ ユーザー ↓ 対象電話番号 ↓ アカウントを削除 の順で、 対象電話番号のFirebase Authenticationユーザーを削除します。 この操作は、 Googleアカウント、Gmail、WPVibe、WordPressユーザーの削除とは別です。 |
| WordPress側 リセット |
対象WordPressユーザーの以下5項目だけを削除します。 _tn_phone_verified _tn_phone_hash _tn_phone_last4 _tn_phone_verified_at _tn_firebase_uid telは削除しません。 これにより、 WordPress側も「電話番号未認証」の状態へ戻ります。 |
| 完全リセット後 |
Firebase側とWordPress側の認証記録を削除すると、
同じユーザー・同じ電話番号で、
再び最初からSMS電話番号認証をテストできます。 電話番号入力 ↓ SMSコード受信 ↓ 認証コード入力 ↓ 再認証完了 |
| 退会時の考え方 |
将来的にはユーザー退会時に、
電話番号認証情報も適切に解除し、
同じ電話番号を再登録時に使用できる状態へ戻す設計とします。 退会処理では、 Firebase側の認証ユーザーと、 WordPress側の電話番号認証関連データの両方を確認します。 |
| 管理上の注意 |
電話番号認証を解除するために、
WordPressユーザー全体やメールアドレスを削除しません。 また、 認証関連データ以外のユーザーメタを誤って削除しない ようにします。 管理者による手動リセットでは、 対象ユーザーIDを必ず確認してから処理します。 |
| 5段階評価との連携 |
現在および将来の評価機能では、
電話番号認証を評価利用条件の一つとして使用します。 将来的には、 電話番号認証 + GPSによる来店確認 + 1ユーザー・1店舗につき原則1評価 を組み合わせ、 評価の信頼性を高めます。 |
電話番号認証の標準フロー
ユーザーログイン
↓
電話番号入力
↓
Firebase SMS送信
↓
6桁認証コード入力
↓
Firebase認証成功
↓
WordPressで電話番号ハッシュ重複確認
↓
認証情報保存
↓
電話番号認証済み
↓
評価機能利用可能
管理者による認証リセット
Firebase Authenticationの対象電話番号ユーザー削除
↓
WordPress対象ユーザーの認証メタ5項目削除
↓
telは残す
↓
電話番号未認証状態へ戻る
↓
SMS認証を再実行可能
最重要原則
電話番号認証情報とWordPress会員情報を混同しない。
認証をリセットする場合は、 WordPressユーザーやメールアドレスを削除するのではなく、 電話番号認証に関係する情報だけを解除します。
Firebase側とWordPress側は別々に認証情報を保持するため、 完全リセット時は両方を確認する ことを標準運用とします。