使用react-native-firebase:4.3.x
我能够连接到RealtimeDB,我们需要安全性,因此我们已设置规则。
但是在浏览docs时,我找不到在连接到Firebase时如何设置 Auth令牌有效载荷的位置。它所要做的就是连接到数据库,调用以下命令:
db = firebase.database();
没有任何参数。我要使用firebase.auth()
吗?
答案 0 :(得分:0)
简短的答案:从一开始,我们对Firebase RealtimeDB规则集的整个方法就不正确;我们在做规则时并不了解Firebase Auth及其与RealtimeDB的联系。我们已经建立了规则,仅基于uid和RealtimeDB的规则,在RealtimeDB上存储了一些随机令牌,希望我们能够以某种方式将 auth负载上的令牌传递给用户。
详细答案: 如Firebase自己的Database Security docs数据库规则所述,数据库规则直接使用Firebase身份验证。
此后,从Authentication RNFirebase.io实施了自定义身份验证
客户端:
let postLogin = (userCredentials) => {
db = firebase.database();
//...do stuff
}
firebase
.auth()
.signInAndRetrieveDataWithCustomToken(token)
.then(postLogin);
Firebase控制台:
Project Settings -> Service Accounts -> Generate new private key.
会生成json格式的Firebase私钥和一些标识符值。在本例中,将其导入您在服务器端使用的任何库中 kreait / firebase-php
不不要启用匿名身份验证,这会破坏目的。
php 使用kreait / firebase.php:
use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
$serviceAccount = ServiceAccount::fromJsonFile($pathToJson);
$firebase = (new Factory())
->withServiceAccount($serviceAccount)
->create();
$token = (string) $firebase->getAuth()->createCustomToken($uid, $payload)
我不需要知道客户端的有效负载。它通过已签名的JWToken通过客户端传递。