无管理员权限下使用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
相关产品推荐
相关产品推荐

