Python云函数Firebase Admin验证ID Token时出现HTTPResponse无strict属性错误
解决Firebase Auth验证时出现
'HTTPResponse' object has no attribute 'strict'错误 问题场景
我基于Python 3.9开发了一个Cloud Function,用于验证Firebase ID Token和App Check Token,代码如下:
firebase_admin.initialize_app() def check_token(token, app_check_token): """ :param app_check_token: :param token: :return: """ try: app_token = app_check.verify_token(app_check_token) logging.info(f"App check token verified : {app_token}") except Exception as e: logging.error(f"Exception while decoding app check token : {e}") try: decoded_token = auth.verify_id_token(token) logging.info(f"verified token : {decoded_token}") if "uid" in decoded_token: return decoded_token["uid"] return "" except Exception as e: logging.error(f"check_token : {e}") return ""
传入有效Firebase ID Token调用该函数时,Cloud Logging抛出错误:
ERROR:root:check_token : 'HTTPResponse' object has no attribute 'strict'
补充信息:我共有10个同代码的云函数,仅这一个出问题;本地用functions-framework --target function_name --debug --port=8080运行完全正常。
错误本质
这个错误是依赖版本冲突引发的:Firebase Admin SDK依赖的requests或urllib3库,与Cloud Function环境中预装的其他库版本不兼容。strict是旧版urllib3中HTTPResponse的属性,新版已移除,但代码逻辑仍尝试访问该属性,导致抛出异常。
排查修复步骤
- 锁定依赖版本:在
requirements.txt中明确指定兼容的依赖版本,避免环境自动拉取最新版导致冲突。示例:
版本选择需确保三者相互兼容,可参考Firebase Admin SDK的依赖说明。firebase-admin==6.2.0 requests==2.31.0 urllib3==2.0.7 - 检查部署配置:确认该云函数的运行环境(如Python版本、运行时)与其他正常函数一致,排查是否存在环境变量或依赖注入的差异。
- 清理后重新部署:删除当前有问题的云函数,清理部署缓存后重新部署,确保依赖完全按
requirements.txt安装,避免旧依赖残留。 - 显式初始化Firebase App:将隐式初始化改为显式初始化,避免环境差异导致的初始化异常:
import firebase_admin from firebase_admin import credentials, auth, app_check cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred)
内容的提问来源于stack exchange,提问作者Tom3652
相关产品推荐
相关产品推荐

