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

升级Requests至2.26.0后调用Firebase auth.verify_id_token出现RecursionError

问题根因
  • 核心兼容冲突:你使用的Requests 2.24.0及以上版本绑定的urllib3组件,和环境中对标准库ssl.SSLContext做了猴子补丁的工具(最常见为pyopenssl库、gevent运行时补丁)存在逻辑冲突。urllib3在配置SSL上下文的options属性时,被补丁修改后的setter方法会循环调用父类的赋值方法,最终触发递归深度超限错误。
  • 代码笔误补充:你提供的代码片段存在一处写法错误:requests.headers['X-Bearer-Token']中requests是第三方库模块本身,不携带请求headers属性,需要替换为你当前使用的web框架的请求实例(比如Flask/Django的request对象),但该笔误不是本次递归错误的触发原因。
解决方案

以下方案任选其一即可解决问题:

  • 方案1:升级依赖到修复后的稳定版本
    将requests升级到2.27.1以上,urllib3升级到1.26.0以上,同时将firebase-admin升级到最新稳定版,上述版本已经官方修复了该SSLContext递归兼容问题。
  • 方案2:移除冲突的pyopenssl库
    如果你的服务没有强制依赖pyopenssl的特殊场景,直接执行命令pip uninstall pyopenssl即可。卸载后urllib3会自动调用标准库原生ssl模块,不会触发补丁冲突。
  • 方案3:强制禁用urllib3的pyopenssl适配
    如果必须保留当前的依赖版本,可以在项目启动入口文件的最顶部添加如下代码:
import urllib3.contrib.pyopenssl
urllib3.contrib.pyopenssl.extract_from_urllib3()

该代码会强制urllib3停止使用pyopenssl的适配逻辑,直接绕过冲突。

  • 方案4:升级Python版本
    你当前使用的Python 3.6已经停止官方维护,升级到Python 3.8及以上版本也可以规避大量旧版本存在的依赖兼容问题。

内容的提问来源于stack exchange,提问作者Gabriel Blondeau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:12:03