我们如何将应用程序验证到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'
]);
}
发布于 2022-11-06 00:41:22
如果您正在使用https://github.com/kreait/firebase-php/,文档将展示如何使用初始化Firebase身份验证,以及如何使用多个受支持的提供者之一的签到。
一旦您登录,身份验证信息将与您的请求安全地传递到数据库,然后您可以在您的安全规则中以request.auth的形式访问它,如这里所示。
发布于 2022-11-09 14:14:45
您需要首先向Firebase验证PHP应用程序,这样应用程序才能发出请求。
要做到这一点,请遵循我最近发现的快速解决方案。
composer require kreait/firebase-php
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);注意:记住,这只是静态的,您必须使整个函数更加动态。
现在,您可以在不受安全规则阻碍的情况下向防火墙发出请求。
https://stackoverflow.com/questions/74332315
复制相似问题