我目前正在使用 Firebase 和 PHP 建立一个小型聊天室。我认为这对 Firebase 来说是一个很好的学习项目,到目前为止我对它非常满意!
然而,我已经碰壁了。我不确定如何通过 PHP 为 Firebase 实施身份验证系统。我需要身份验证系统执行的操作非常具体:
为了能够使用聊天,用户必须使用我的自定义 php 登录系统登录。然后,一旦他们登录,他们还将进行身份验证,以便能够在聊天中读/写。
我无法真正理解使用 CURL 的 PHP 是如何实现的(如果有的话)。
在我的__construct
函数中有以下内容:
require('/libs/FirebaseLib.php');
$this->firebase = new fireBase('https://<url>.firebaseio.com');
require('/libs/JWT.php');
require('/libs/FirebaseToken.php');
$tokenGen = new Services_FirebaseTokenGenerator('<firebase-secret>');
$this->authtoken = $tokenGen->createToken(
array(
'id' => $this->userid
)
);
我将如何通过 Firebase 进行身份验证以让用户能够在我的聊天中读/写,并且不允许未经身份验证的用户读/写?注意:我没有对 Firebase 安全规则做任何事情——这是我的问题的一部分。
我查看了文档,我可能只是很厚,但我真的找不到我要找的东西。
希望有人指出我正确的方向。
谢谢!
编辑:我故意不使用 javascript 进行聊天,除了对我的 php 脚本的 ajax 调用,然后在我完成我想要对用户的消息执行的操作后将其中继到 Firebase。
编辑 2:添加到所用库的链接:“ Firebase 令牌生成器”和“ Firebase PHP Client ”
编辑 3:我当前的代码如下所示:(参考)
__构造:
$this->authtoken = JWT::encode(
array(
'admin' => true,
'debug' => true,
'v' => 0,
'iat' => time(),
'd' => array('user' => 'admin')
),
'<secret>',
'HS256'
);
新消息功能:
$response = $this->firebase->set('/chat.json?auth=' . $this->authtoken, array(
'message' => array(
'username' => 'Test',
'time' => time(),
'string' => 'Hello World!'
)
));
但是它返回:{ "error" : "invalid_token: Could not parse auth token." }
。我基本上想获得管理员权限。我尝试仅使用 Firebase 机密作为身份验证,但它返回相同的错误。
规则:
{
"rules": {
".read": "auth.username == 'admin'",
".write": "auth.username == 'admin'"
}
}