首页 > 解决方案 > 如何使用 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);

但我唯一能做到的就是获取当前用户。

任何人都知道如何计算所有用户/获取他们?

标签: phplaravelfirebasefirebase-authentication

解决方案


嗨,您在这里使用的 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 包吗?


推荐阅读