导出用户
导出 Firebase 用户到 Excel
本示例使用 Firebase Admin SDK 从 Firebase 中导出用户信息,并通过 EasyExcelUtils
工具类将数据导出为 Excel 文件。
示例代码
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.google.firebase.auth.ExportedUserRecord;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseAuthException;
import com.google.firebase.auth.ListUsersPage;
import com.litongjava.db.activerecord.Record;
import com.litongjava.open.chat.config.FirebaseAppConfiguration;
import com.litongjava.table.utils.EasyExcelUtils;
import com.litongjava.tio.utils.environment.EnvUtils;
public class FirebaseUsersTest {
@Test
public void exportUsers() {
// 加载环境变量(如 Firebase 配置)
EnvUtils.load();
// 初始化 Firebase 应用配置
try {
new FirebaseAppConfiguration().config();
} catch (IOException e) {
e.printStackTrace();
return;
}
// 初始化 FirebaseAuth 实例,开始获取用户列表
ListUsersPage page = null;
FirebaseAuth instance = FirebaseAuth.getInstance();
try {
page = instance.listUsers(null);
} catch (FirebaseAuthException e) {
e.printStackTrace();
return;
}
// 创建一个列表存储所有用户信息
List<Record> users = new ArrayList<>();
while (page != null) {
for (ExportedUserRecord user : page.getValues()) {
String uid = user.getUid();
String email = user.getEmail();
String displayName = user.getDisplayName();
// 创建用户记录,将 Firebase 用户信息映射为 Record 对象
Record record = Record.by("uid", uid)
.set("email", email)
.set("displayName", displayName);
users.add(record);
}
page = page.getNextPage(); // 获取下一页用户
}
// 导出数据到 Excel 文件
try (OutputStream outputStream = new FileOutputStream("firebase_users.xlsx")) {
// 使用 EasyExcelUtils 将用户数据写入 Excel 文件
EasyExcelUtils.write(outputStream, "firebase_users", users);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
代码解释
环境加载和配置:
- 使用
EnvUtils.load()
来加载项目中的环境变量,这些变量可能包括 Firebase 的配置。 FirebaseAppConfiguration().config()
用于初始化 Firebase Admin SDK,以便从 Firebase 获取用户信息。
- 使用
获取 Firebase 用户信息:
- 使用
FirebaseAuth.getInstance().listUsers(null)
获取用户信息,这会返回ListUsersPage
,包含用户的分页数据。通过while
循环遍历所有用户页面,直到所有用户都被处理完毕。 - 每个用户记录通过
ExportedUserRecord
获取基本信息(例如 UID、邮箱、显示名),并将其存储为Record
对象。
- 使用
导出到 Excel 文件:
- 使用
EasyExcelUtils.write()
方法将用户数据写入 Excel 文件。EasyExcelUtils
是自定义工具类,用于简化 Excel 文件的生成过程。
- 使用
注意事项
- 在导出过程中,要确保 Firebase Admin SDK 已经正确配置,并且有权限访问 Firebase 用户数据。
- Excel 文件路径可以根据需要进行更改。在示例中,文件将被保存为当前工作目录下的
firebase_users.xlsx
。 EasyExcelUtils
是一个自定义工具类,实际项目中可能需要根据具体需求修改,确保它能够正确处理Record
数据类型并生成 Excel 文件。
这样,你不仅可以导出 Firebase 用户,还能够将其转化为结构化的 Excel 数据,方便后续的数据分析或存档使用。