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

无管理员权限下使用Python访问Firestore数据库

解决Firestore只读访问的问题(替代pyrebase方案)

嘿,我来帮你搞定这个问题!你之前用pyrebase失败的核心原因其实很简单:pyrebase主要是为Firebase Realtime Database设计的,对Firestore的支持非常有限,甚至很多基础功能都不兼容,所以用它来访问Firestore自然会出问题。

下面给你两种适配你只读权限场景的解决方案:

方案一:公开只读数据库(无需服务账号密钥)

如果你的Firestore数据库安全规则已经设置为允许未认证用户读取(比如规则里写了allow read: if true;),那可以直接用Firestore的REST API结合Python的requests库来获取数据,只需要你已有的apiKey和项目ID:

import requests

# 替换成你firebaseConfig里的apiKey和项目ID
API_KEY = "你的apiKey"
PROJECT_ID = "你的项目ID"
TARGET_COLLECTION = "annonces"

# 构造Firestore REST API请求地址
request_url = f"https://firestore.googleapis.com/v1/projects/{PROJECT_ID}/databases/(default)/documents/{TARGET_COLLECTION}?key={API_KEY}"

# 发送GET请求获取数据
response = requests.get(request_url)
if response.status_code == 200:
    # 解析返回的JSON数据
    collection_data = response.json()
    for doc in collection_data.get("documents", []):
        print(f"文档ID: {doc['name'].split('/')[-1]}")
        print(f"文档内容: {doc['fields']}")
else:
    print(f"获取数据失败,错误信息: {response.text}")

方案二:需要认证的只读数据库(联系管理员获取权限文件)

如果数据库的安全规则不是公开的,而是需要身份认证才能读取,那你得联系项目管理员,让他们给你一个仅拥有Firestore读取权限的服务账号JSON文件,然后用官方的firebase-admin库来访问:

第一步:安装依赖

pip install firebase-admin

第二步:编写访问代码

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# 加载管理员提供的只读服务账号密钥文件
cred = credentials.Certificate("path/to/your-readonly-service-account.json")
# 初始化Firebase应用
firebase_admin.initialize_app(cred)

# 获取Firestore客户端
db = firestore.client()

# 读取annonces集合的所有文档
docs = db.collection("annonces").get()
for doc in docs:
    print(f"文档ID: {doc.id}")
    print(f"文档内容: {doc.to_dict()}")

关键提醒

  • 不要再用pyrebase来操作Firestore了,它的Firestore支持是半残的,官方库才是靠谱的选择。
  • 如果不确定数据库的安全规则,可以先检查一下Firebase控制台里的"规则"标签,确认读取权限的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:42:32