AIイノベーションズ

Firebaseで最終ログイン日時を取得してFirestoreに保存する

Firebase Authenticationのユーザーメタデータから最終ログイン日時を取得し、FirestoreにTimestamp型として保存する方法を解説。JavaScriptコード例と重要なポイント(lastSignInTime, Timestamp())を紹介します。

Firebase Authenticationのユーザー情報には最終ログイン日時が保存されています。

ここでは、その最終ログイン日時を取得して、Firestoreに保存するコードを紹介します。

まず今回の動作をおこなうのに重要なポイントを挙げておきます。

ポイント

  • 最終ログイン日時はuser.metadata.lastSignInTimeから取得すること
  • Firestoreに日時を格納するためには**Timestamp()**を利用すること(詳細はドキュメント

コード

Firebaseを初期化する

まずFirebaseを初期化します。ただ多くのプロジェクトではロード時に初期化済みかと思うので省略可です。

import { getFirestore, doc, setDoc, Timestamp } from 'firebase/firestore';
import { initializeApp } from 'firebase/app';
import { getAuth, onAuthStateChanged } from 'firebase/auth';
import { FIREBASE_CONFIG } from 'env';
 
// Initialize Firebase
const app = initializeApp(FIREBASE_CONFIG);
const analytics = getAnalytics(app);
const db = getFirestore(app);

最終ログイン日時を取得する

Firebase Authenticationから最終ログイン日時を取得します。

// ユーザーおよび最終ログイン日時を取得する
const user = //省略。authStateChanged()等で取得
const lastLogin = user.metadata.lastSignInTime;

取得した日時をFirestoreに保存する

最後に、先ほど取得した日時をFirestoreにタイムスタンプとして保存します。

// 最終ログイン日時をFirestoreのusersコレクションに格納する
const lastLoginTimeStamp = Timestamp.fromDate(new Date(lastLogin)); //FirestoreのためにTimestamp()を利用して整形する
const docRef = doc(db, 'users', "document_id");
setDoc(docRef, {
  last_login: lastLoginTimeStamp
});

"document_id" は適宜変更してください。

以上の流れで、最終ログイン日時を取得してFirestoreに保存できます。

On this page