python-3.x - 例外:401 请求具有无效的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据
问题描述
多年来我见过一些人面临类似的问题,但我没有发现太多关于我的案例。
我有一个用 python3 构建的后端。
- 我
firebase_admin
用作连接到 Firebase Cloud Firestore 的库。 - 然后我将我的代码提交到 Github 并使用 Github Actions
- 我正在将 docker 容器部署到 Google Cloud Run。
- 这一切都可以正常工作一段时间
- 一段时间后抛出以下异常:
Exception: 401 Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
我究竟做错了什么?
- 每次调用该函数时都应该连接吗?(在每个函数调用中移动数据库初始化)
- 感觉令牌过期了。我可以以某种方式刷新它吗?
Python代码:
from firebase_admin import firestore, initialize_app
initialize_app()
db = firestore.client()
def get_info_from_firestore(name: str:
try:
data = db.collection(u'data').where(u'title', u'==', name).stream()
for rating in ratings:
return rating.to_dict()
return None
except Exception as e:
logging.warning(Exception: {e}')
return None
这个文件是从我使用 Flask 的根 python 文件中导入的。
编辑:最后一件事可能会有所帮助,如果我重新部署我的容器而不做任何更改,它就会再次工作。
解决方案
这可能是由于时间漂移而发生的:docker 中的时间与实时显着不同。重启后时间是同步的,但过了一段时间它会漂移。谷歌不喜欢它。在此处查看有关此 WSL/容器问题的更多信息https://github.com/microsoft/WSL/issues/4245和此处https://github.com/docker/for-win/issues/4526
推荐阅读
- c# - 递归方法的多个循环c#
- swift - Swift - 未调用组合订阅
- function - 使用参数从 CMD 调用 Powershell 脚本函数
- flutter - 如何在 Flutter/Dart 中显示 SharedPreferences 值?
- python - 多类混淆矩阵解释
- python - 使用 python 的 mock patch.object 来检查一个函数是否被调用
- php - Laravel 总是在 xampp 上使用虚拟主机返回 404
- python - (全新的编码)有人可以告诉我这里的无效语法是什么吗?
- tla+ - 如何从集合中获取特定元素 - PlusCal
- python - importlib.import_module 忽略没有错误消息的模块