You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase PHP存API请求到Realtime Database时如何做身份验证?

Firebase PHP API 身份校验实现方案

前置要求

用户端需先通过Firebase客户端SDK完成账号登录,获取到当前登录用户的ID Token,后续所有API请求都需要携带该Token。

PHP服务端校验流程

  • 第一步:安装官方推荐的Firebase PHP Admin SDK
    执行composer命令:composer require kreait/firebase-php
  • 第二步:初始化Firebase Auth实例
    代码示例:
    <?php
    require __DIR__.'/vendor/autoload.php';
    
    use Kreait\Firebase\Factory;
    use Kreait\Firebase\Exception\Auth\FailedToVerifyToken;
    
    // 替换为你的服务账号密钥文件路径
    $factory = (new Factory)
        ->withServiceAccount('/path/to/firebase-service-account.json');
    
    $auth = $factory->createAuth();
    ?>
    
  • 第三步:提取请求携带的ID Token
    要求客户端将ID Token放在Authorization请求头中,格式为Bearer <用户IDToken>,PHP侧提取逻辑:
    $idToken = str_replace('Bearer ', '', $_SERVER['HTTP_AUTHORIZATION'] ?? '');
    if (empty($idToken)) {
        http_response_code(401);
        echo json_encode(['error' => '缺少身份凭证']);
        exit;
    }
    
  • 第四步:校验ID Token有效性
    代码示例:
    try {
        $verifiedIdToken = $auth->verifyIdToken($idToken);
    } catch (FailedToVerifyToken $e) {
        http_response_code(401);
        echo json_encode(['error' => '身份凭证无效或已过期']);
        exit;
    }
    
    // 校验通过,获取用户唯一标识UID
    $uid = $verifiedIdToken->claims()->get('sub');
    // 后续可将UID和请求信息关联写入Realtime Database,也可基于UID做权限控制
    

注意事项

  • 禁止直接使用客户端传递的明文UID作为身份判断依据,必须通过ID Token校验拿到的UID才可信,避免伪造请求
  • ID Token默认有效期为1小时,客户端需在Token过期前调用Firebase客户端的刷新接口获取新的有效Token
  • 可同步配置Realtime Database规则做双重防护,示例规则如下,限制用户仅能读写自己UID对应节点下的数据:
    {
      "rules": {
        "request_records": {
          "$uid": {
            ".read": "auth.uid === $uid",
            ".write": "auth.uid === $uid"
          }
        }
      }
    }
    

内容的提问来源于stack exchange,提问作者ercan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:18:03