Python环境下仅安装Firebase Admin SDK中Firebase Auth模块的方法咨询
解答
关于按模块单独安装的可行性
目前官方firebase-admin包未提供--only auth这类按功能模块筛选安装的参数,默认安装会打包Firestore、Cloud Storage、Cloud Messaging、Auth等全量服务的相关依赖,100MB左右的体积属于正常情况。
无需手动梳理依赖的精简实现方案
方案1:用轻量JWT验证替代全量SDK(最推荐)
Firebase的idToken是符合规范的JWT格式,仅做idToken验证完全不需要引入整个firebase-admin,仅需PyJWT和cryptography两个依赖即可实现全部验证逻辑,总依赖体积不到10MB,远小于全量firebase-admin。
具体实现步骤:
- 安装依赖:
pip install pyjwt cryptography requests
- 验证代码示例:
import jwt import requests # 拉取Google Firebase签名公钥,建议本地缓存公钥避免每次验证重复请求 def get_firebase_public_keys(): resp = requests.get("https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com") resp.raise_for_status() return resp.json() def verify_firebase_id_token(id_token: str, your_firebase_project_id: str) -> dict: public_keys = get_firebase_public_keys() # 读取idToken的header获取签名kid token_header = jwt.get_unverified_header(id_token) if token_header["kid"] not in public_keys: raise ValueError("无效的token签名密钥ID") # 验证token签名、有效期、签发方、受众等字段 payload = jwt.decode( id_token, key=public_keys[token_header["kid"]], algorithms=["RS256"], audience=your_firebase_project_id, issuer=f"https://securetoken.google.com/{your_firebase_project_id}", options={"verify_exp": True} ) return payload
方案2:裁剪firebase-admin冗余模块
如果必须使用firebase_admin.auth的原生方法,可以按以下步骤操作,不需要手动梳理每个文件的依赖:
- 先安装依赖分析工具:
pip install pipdeptree - 临时安装全量firebase-admin,执行
pipdeptree -p firebase-admin,筛选出auth模块关联的所有依赖项 - 下载firebase-admin的源码压缩包,删除源码中
firestore、storage、messaging等不需要的模块目录,修改setup.py中的install_requires字段,仅保留上一步筛选出的依赖 - 执行本地安装:
pip install .
裁剪完成后的包体积可降到20MB以内。
内容的提问来源于stack exchange,提问作者Tom3652
相关产品推荐
相关产品推荐

