如何将Firebase Auth与PHP应用程序集成?

如何将Firebase Auth与PHP应用程序集成?,php,firebase,firebase-authentication,Php,Firebase,Firebase Authentication,我有一个简单的PHP API,用于验证使用我的应用程序的用户。 我一直在尝试使用Firebase Auth,但没有成功。 根据找到的文档,我得出以下结论: 我已经在Firebase控制台中创建了Firebase项目 我已经创建了一个服务帐户,为此我下载了包含所需凭据的Secret.json文件 我已将该文件放置在我的应用程序的根目录中 我使用以下代码与数据库交互: $serviceAccount = ServiceAccount::fromJsonFile(__DIR__.'/pat

我有一个简单的PHP API,用于验证使用我的应用程序的用户。 我一直在尝试使用Firebase Auth,但没有成功。 根据找到的文档,我得出以下结论:

  • 我已经在Firebase控制台中创建了Firebase项目

  • 我已经创建了一个服务帐户,为此我下载了包含所需凭据的Secret.json文件

  • 我已将该文件放置在我的应用程序的根目录中
我使用以下代码与数据库交互:

    $serviceAccount = ServiceAccount::fromJsonFile(__DIR__.'/path/to/file.json');

    $firebase = (new Factory)
        ->withServiceAccount($serviceAccount)
        ->createAuth();
在转储$firebase实例时,我得到以下结果:

^ Kreait\Firebase\Auth {#78 ▼
  -client: Kreait\Firebase\Auth\ApiClient {#55 ▶}
  -tokenGenerator: Firebase\Auth\Token\Generator {#58 ▶}
  -idTokenVerifier: Kreait\Firebase\Auth\IdTokenVerifier {#77 ▶}
}
这让我相信连接是成功的,但是当我尝试列出所有用户时

    $firebase->listUsers();
我得到以下信息

^ Generator {#42 ▼
   this: Kreait\Firebase\Auth {#78 …}
   executing: {▼
     C:\Users\user\Projects\Simple-Api\vendor\kreait\firebase- 
php\src\Firebase\Auth.php:110 {▼
       Kreait\Firebase\Auth->listUsers(int $maxResults = 1000, int $batchSize = 1000): Generator …
       › {
       ›     $pageToken = null;
       ›     $count = 0;
     }
   }
   closed: false
 }
当我尝试像这样循环遍历所有用户时:

   foreach ($users as $user) {
         var_dump($user);
     }
我得到以下错误:

cURL error 60: SSL certificate prblm: unable to get local issuer certificate
cURL error 77: SSL certificate prblm: unable to get local issuer certificate
临时修复(不建议用于生产):

  • 转到Guzzle Client.php类
  • 将验证设置为false

如果您继续遵循文档,您会发现


Auth::listUsers()
返回一个生成器,您可以使用
foreach()
循环该生成器,也可以使用
迭代器\u to \u array()
将其转换为数组-仅当您限制结果集时,才应使用后者,否则,当PHP尝试将数千条用户记录加载到内存中时,您将遇到性能问题。

感谢您的回复@jeromegamez,我已经尝试了您的建议,我得到了以下错误:
PHP致命错误:未捕获的GuzzleHttp\Exception\RequestException:cURL错误77:设置证书验证位置时出错
。你认为.json文件不是应该的吗?@Pmits呃,这是我还没听说过的一个。。。你能看看这是否有助于解决问题吗?您的JSON文件可能很好,这似乎是一个连接问题,我认为这是合适的解决方案,谢谢。我还更新了一个快速修复的问题,我只是为了测试的目的。再次感谢。