如何操作Firebase Authentication数据?提取180天未登录用户方法咨询
Firebase Authentication 用户数据操作与未登录用户提取方案
一、操作Firebase Authentication用户数据(标识符、提供者、创建时间等)
- 控制台直接查看:在Firebase控制台的Authentication页面,用户列表默认展示Identifier(邮箱/手机号等)、Created(创建时间)、Signed In(最后登录时间)、User UID字段,支持按这些字段排序筛选。
- Admin SDK批量/单个操作:借助Firebase Admin SDK可灵活获取、修改用户数据,以下是Node.js示例:
const admin = require("firebase-admin"); admin.initializeApp(); // 获取单个用户的完整数据 async function getUserDetail(uid) { const userRecord = await admin.auth().getUser(uid); console.log('用户标识符:', userRecord.email || userRecord.phoneNumber); console.log('登录提供者:', userRecord.providerData); console.log('账号创建时间:', userRecord.metadata.creationTime); console.log('最后登录时间:', userRecord.metadata.lastSignInTime); } // 批量拉取用户(单次最多1000条) async function batchListUsers() { let pageToken; do { const result = await admin.auth().listUsers(1000, pageToken); result.users.forEach(user => { // 按需处理每条用户数据 }); pageToken = result.pageToken; } while (pageToken); } // 修改用户数据(示例:更新邮箱) async function updateUserEmail(uid, newEmail) { await admin.auth().updateUser(uid, { email: newEmail }); }
二、提取过去180天未登录的用户
由于控制台单次仅支持查看250条用户,批量筛选需借助以下方法:
- Admin SDK遍历筛选:
通过循环拉取所有用户,判断最后登录时间与当前时间的差值,筛选出符合条件的用户,示例代码:const admin = require("firebase-admin"); admin.initializeApp(); const INACTIVE_THRESHOLD = 180 * 24 * 60 * 60 * 1000; // 180天对应的毫秒数 async function filterInactiveUsers() { const inactiveUsers = []; let pageToken; const now = Date.now(); do { const result = await admin.auth().listUsers(1000, pageToken); result.users.forEach(user => { const lastSignInMs = user.metadata.lastSignInTime ? new Date(user.metadata.lastSignInTime).getTime() : null; // 从未登录或超过180天未登录的用户 if (!lastSignInMs || (now - lastSignInMs) > INACTIVE_THRESHOLD) { inactiveUsers.push({ uid: user.uid, identifier: user.email || user.phoneNumber, createdTime: user.metadata.creationTime, lastSignInTime: user.metadata.lastSignInTime || '从未登录' }); } }); pageToken = result.pageToken; } while (pageToken); // 输出或导出结果 console.log('符合条件的未登录用户:', inactiveUsers); } filterInactiveUsers(); - 数据存储说明:Firebase Auth的用户核心数据(包括登录时间、创建时间等)存储在Firebase后端服务器,无法直接访问底层存储,只能通过控制台、Admin SDK或Auth REST API获取。
- 优化方案:若需频繁筛选,可在用户每次登录时,将
lastSignInTimestamp同步到Firestore或Realtime Database,之后直接用数据库查询语句(如查询lastSignInTimestamp < (当前时间 - 180天)),避免全量遍历用户。
内容的提问来源于stack exchange,提问作者Filipe Bittencourt
相关产品推荐
相关产品推荐

