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

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。
具体实现步骤:

  1. 安装依赖:
pip install pyjwt cryptography requests
  1. 验证代码示例:
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:57:03