Firebase身份验证:'HTTPResponse'对象没有属性'strict',状态:错误

34
我有点困惑,为什么这段代码突然决定失败了,而它之前一个星期一直都能正常工作。
import firebase_admin
from firebase_admin import firestore, credentials,db, auth

    def userIsLoggedIn(self,id_token: str) -> bool:
        try:
            decoded_token = auth.verify_id_token(id_token)
            self.uid = decoded_token['uid']
        except Exception as e:
            return False,str(e)       
        
        return True,""

返回的错误消息是: 'HTTPResponse'对象没有属性'strict' 我只能在云服务器上测试时复制此错误,而不能在本地主机上。
我已经查看了堆栈跟踪,并且我看到是auth.verify_id_token函数引起问题,特别是:
ile "/usr/local/lib/python3.11/site-packages/cachecontrol/serialize.py", line 54, in dumps
2023-05-04T16:11:04.767062340Z u"strict": response.strict,
2023-05-04T16:11:04.767067540Z ^^^^^^^^^^^^^^^
2023-05-04T16:11:04.767072540Z AttributeError: 'HTTPResponse' object has no attribute 'strict'

编辑:

好的,Patrick在下面给我提供了一个链接,告诉我:

“这似乎是cachecontrol与urllib3 2.0新版本不兼容的问题。HTTPResponse类上不再支持strict参数。暂时来说,您可能需要将urllib3固定到旧版本或与cachecontrol团队合作更新其用法。”

我现在得看看能否采取一些措施。例如,像Patrick建议的那样使用urllib3 2.0.0作为解决方法。

5个回答

23

我添加了更多的细节和解决方法。我正在尝试使用解决方法:我正在使用以python:3.9-slim-bullseye开头的docker镜像,到目前为止还没有找到一个好的方法来使用urllib3 2.0.0。 - Patrick Mansfield
1
哦,谢谢@PatrickMansfield - 我一直在分析我的代码,试图找出是什么原因导致了这个问题。至少现在我知道不是我的问题了。我会编辑我的问题,提供更多信息给大家,从链接中看到的。 - Reddspark
这是由于我的情况下 firebase-admin -> requests -> urllib3 引起的。问题在于 requests 要求任何版本的 urllib。对我来说的解决方法是在 requirements 文件中添加 urllib3<2.0.0 - Blip
对我来说,在运行了这个命令 pipenv install urllib3==1.26.15 之后它起作用了。 - Ali Hussnain - alichampion
2
对我来说,在运行这个命令 pipenv install urllib3==1.26.15 之后,它起作用了。 - undefined
1
对我来说,在运行这个命令 pipenv install urllib3==1.26.15 之后,它起作用了。 - Ali Hussnain - alichampion

16

我遇到了同样的错误,可能是由于运行 poetry install 时出现了相同的基本原因。这并不能帮助 OP,但以防其他人为了同样的原因而找到了这篇文章,我成功地通过将 poetry 1.1.14 升级到 1.3.2 来解决这个问题。


2
上下文:https://github.com/python-poetry/poetry/issues/7877 - tzachs
谢谢 - 设置urllib3对我有用,但由于我正在使用poetry,所以最终也使用了这个解决方法,因为我已经为它设置了一个版本,更新它是一个好主意,这意味着少设置了一个版本。奇怪的是,我查看了一下,poetry在版本1.26.0中更改为使用urllib3以获取更新版本(他们可能应该使用>=某个版本),但这也意味着它不会使用比1.26.0更新的版本。版本问题真是麻烦。 - Patrick Mansfield

4
我在构建Django项目的docker镜像时遇到了同样的问题。这个问题在本地和数字海洋上都出现了。 我只是将安装的poetry版本从1.1.8更改为1.4.2,问题就消失了。

我已经拥有了诗歌版本1.4.2和urllib3(1.26.8),但是仍然出现错误 - 'HTTPResponse'对象没有'strict'属性。任何想法为什么它仍然失败? - Harvindar Singh Garcha

1

我尝试了不同的变化,但帮助我的是将诗歌版本从1.1.13更改为1.3.2,并在poetry.lock中将urllib3版本更改为">=1.26.1, <2.0.0"。


1

我升级到了1.2.2版本,这是我依赖项中最接近的版本之一,它完美地工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接