Firebase PHP CURL身份验证

qquas 发布于 2019-03-09 authentication 最后更新 2019-03-09 14:33 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的聊天,除了Ajax调用我的PHP脚本,然后将它传递给Firebase后,我已经做了我想做的用户的消息。 编辑2:添加到使用库的链接:“Firebase Token Generator”和“Firebase PHP Client” 编辑3:我目前的代码如下所示:(reference) __构造:
$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秘密作为auth,但它返回相同的错误。 规则:
{
  "rules": {
    ".read": "auth.username == 'admin'",
    ".write": "auth.username == 'admin'"
  }
}
已邀请:

eos_et

赞同来自:

一般工作流程是:

  1. 用户使用自定义登录系统进行身份验证后,在服务器端PHP代码中生成Firebase身份验证令牌。 (看起来你已经使用了你粘贴的代码片段了。)
  2. 将该令牌传回客户端。
  3. 让客户端调用firebase.auth(< token>);使用服务器生成的令牌向Firebase进行身份验证。
  4. 使用安全规则限制客户端可以读取/写入的内容,具体取决于其身份验证令牌的内容。
对于一个简单的场景,您只想在经过身份验证后允许所有Firebase访问,您可以拥有以下安全规则:
{
    "rules": {
        ".read": "auth != null",
        ".write": "auth != null"
     }
}
这将为经过身份验证的用户提供对整个Firebase的读/写访问权限。您可能希望将其锁定得更多(即只允许他们对Firebase的某些部分进行读/写访问)。查看我们的Security Quickstart,了解auth和安全规则的工作原理。 如果这没有帮助,也许你可以详细说明你被困在哪个部分。