如何使用PHP将Firebase Firestore项目从测试模式转换为生产模式?

camsedfj  于 2022-11-17  发布在  PHP
关注(0)|答案(2)|浏览(360)

我们如何向Firestore验证应用程序?(不使用服务帐户),因为当服务帐户与需要验证的安全规则发生冲突时。当我切换到生产模式并执行查询时,我收到此消息

这是在生产模式中设置的规则

match /{document=**} {
   allow read, write: if request.auth!=null;
}

match /projects/{document=**} {
   allow read, write;
}

这是我的代码,这段代码只在测试模式下工作,我如何让它在生产模式下工作呢?

public function __construct(){
    global $key;
    $this->firestore = new FirestoreClient([
    'keyFilePath' => $key,
    'projectId' => 'test-4c1ff'
  ]);
}
9o685dep

9o685dep1#

如果您使用的是https://github.com/kreait/firebase-php/,文档将介绍如何执行initialize Firebase Authentication,然后使用众多受支持的提供商之一登录。
登录后,身份验证信息将与您的请求一起安全地传递到数据库,然后您可以在安全规则中以request.auth的身份访问它,如下所示。

ilmyapht

ilmyapht2#

您需要首先向Firebase验证您的PHP应用程序,以便您的应用程序发出请求。
要做到这一点,按照这个快速解决方案,我最近发现。
1.首先,您必须在Firebase验证控制台中创建自己的验证电子邮件和密码。
1.在您的应用程序上安装此套件:
composer require kreait/firebase-php
1.安装完软件包后,您可以继续此处的操作。

use Kreait\Firebase\Factory;
use Kreait\Firebase\Auth;
use Kreait\Firebase\Auth\SignInResult;

$key = ""
$factory = (new Factory)
->withServiceAccount($key)
->withDatabaseUri('Your Firebase Database URi');
$auth = $factory->createAuth();

$email = "Your Email";
$password = "Your Password";
$signInResult = $auth->signInWithEmailAndPassword($email, $password);

注意:请记住,这只是静态的,您必须使整个函数更动态。
现在您可以向firebase发出请求,而不会被安全规则阻止。
参考编号:

相关问题