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

如何使用API密钥和应用用户名密码在Python中访问Firebase后端

实现方案

你要的能力可以通过调用Firebase官方客户端REST API实现,全程不需要引入Admin SDK、不需要使用服务账号密钥,权限完全受Firebase安全规则管控,具体实现步骤如下:

前置准备

从Firebase控制台项目设置页获取两个必备参数:

  • 项目Web API密钥
  • 目标资源的访问端点(Firestore默认端点为https://firestore.googleapis.com/v1/projects/你的项目ID/databases/(default)/documents,实时数据库默认端点为https://你的项目ID.firebaseio.com)

第一步:实现邮箱密码身份认证

调用Firebase Auth的登录接口获取认证ID令牌,示例代码如下:

import requests

def get_auth_id_token(web_api_key: str, email: str, password: str) -> str:
    """通过邮箱密码登录获取Firebase认证ID令牌"""
    auth_url = f"https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={web_api_key}"
    req_payload = {
        "email": email,
        "password": password,
        "returnSecureToken": True
    }
    resp = requests.post(auth_url, json=req_payload)
    resp.raise_for_status()
    return resp.json()["idToken"]

返回的idToken有效期为1小时,后续访问Firebase资源时需要携带该令牌完成鉴权。

第二步:携带令牌访问Firebase后端资源

以Firestore数据查询为例,示例代码如下:

def query_firestore_data(web_api_key: str, id_token: str, project_id: str, collection_name: str, doc_id: str) -> dict:
    """携带认证令牌访问Firestore资源,请求会自动触发Firebase安全规则校验"""
    resource_url = f"https://firestore.googleapis.com/v1/projects/{project_id}/databases/(default)/documents/{collection_name}/{doc_id}?key={web_api_key}"
    req_headers = {
        "Authorization": f"Bearer {id_token}"
    }
    resp = requests.get(resource_url, headers=req_headers)
    # 权限不匹配时会返回403错误,可自行捕获处理
    resp.raise_for_status()
    return resp.json()

额外优化建议

  • 可以封装ID令牌自动刷新逻辑,通过登录时返回的refreshToken调用刷新接口更新ID令牌,无需用户重复输入密码
  • 所有请求的鉴权逻辑和移动端/Web端完全一致,直接复用现有Firebase安全规则即可,不需要额外修改权限配置
  • 无需在Python包中内置任何敏感密钥,所有敏感信息由终端用户自行传入,不会有密钥泄露风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:09:02