php - 如何使用 PHP (Laravel 5.8) 从 Firebase 计算用户数
问题描述
我试图弄清楚如何计算 Firebase 中的所有注册用户。我只实现了 Firebase 身份验证,并没有手动创建数据库。
我找不到计数甚至从 Firebase 获取它们的方法。
$serviceAccount = ServiceAccount::fromJsonFile(config_path('path-to-file.json'));
$firebase = (new Factory())
->withServiceAccount($serviceAccount)
->create();
$database = $firebase->getDatabase();
我与上面的代码有联系。
我还尝试使用 auth 助手,例如:
$auth = $firebase->getAuth();
$users = $auth->listUsers($defaultMaxResults = 1000, $defaultBatchSize = 1000);
但我唯一能做到的就是获取当前用户。
任何人都知道如何计算所有用户/获取他们?
解决方案
嗨,您在这里使用的 SDK 的维护者 :)。
目前(截至 2019 年 8 月 29 日,据我所知)没有办法直接获取 Firebase 项目中的注册用户数量,除非通过迭代所有这些用户并手动计算它们。
最快的方法是使用
$users = $auth->listUsers();
$userCount = iterator_count($users);
我们必须在iterator_count
这里使用,因为Auth::listUsers()
返回的Generator
行为与“通常”数组不同:它不是一次获取所有用户,而是仅在我们“需要”时获取下一批。
有一些方法可以将iterator_to_array()
迭代器转换成数组(用户。iterator_count()
出于这个原因,我建议不要使用iterator_to_array()
,但是foreach
当您想直接使用用户记录时:
foreach ($users as $user) {
/** @var \Kreait\Firebase\Auth\UserRecord $user */
echo $user->uid;
}
以及iterator_count()
仅谨慎使用并在获得结果时缓存结果。
PS:你知道现在这个 SDK 也有一个 Laravel 包吗?
推荐阅读
- sockets - 谁能告诉我如何在 Wireshark 上激活环回?
- flutter - 我应该在一页/屏幕中使用多个块在 Flutter 中加载不同的状态吗?
- python - pip 安装了 biopython,但它不会编译 Bio 模块
- python - 如何在 Python 中为 Linux 创建 URL 快捷方式?
- php - 使用本地 php.ini 文件运行 Cron 作业 - Laravel 5.8
- php - 通过变量分隔符拆分和捕获文本
- excel - 通过名称管理器动态更改文件名
- wordpress - 如何在 Wordpress search.php 文件中添加 Widget 区域?
- reactjs - Twilio Flex UI - WebRTC/ORTC 部署错误
- sql-server - Azure SQL 数据库 - 除非以 sql 管理员身份连接,否则无法删除/更新已注册的 dacpac