3

我目前正在使用 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'"
  }
}
4

1 回答 1

1

一般的工作流程是:

  1. 用户通过您的自定义登录系统进行身份验证后,在您的服务器端 PHP 代码中生成一个 Firebase 身份验证令牌。(看起来您粘贴的代码片段已经走到了这一步)。
  2. 将该令牌传递回客户端。
  3. 让客户端调用 firebase.auth(<token>); 使用您的服务器生成的令牌对 Firebase 进行身份验证。
  4. 使用安全规则来限制客户端可以读取/写入的内容,具体取决于其身份验证令牌的内容。

对于一个简单的场景,您只想允许所有经过身份验证的 Firebase 访问,您可以只使用以下安全规则:

{
    "rules": {
        ".read": "auth != null",
        ".write": "auth != null"
     }
}

这将为经过身份验证的用户提供对整个 Firebase 的读/写访问权限。不过,您可能希望将其锁定得更多(即仅授予他们对 Firebase 某些部分的读/写访问权限)。查看我们的安全快速入门,了解身份验证和安全规则的工作原理。

如果这没有帮助,也许您可​​以详细说明您遇到困难的部分。

于 2013-04-11T16:23:09.587 回答