繁体   English   中英

具有匿名凭据的 Firestore 模拟器

[英]Firestore emulator with anonymous credentials

我正在尝试让 Firestore 在本地 Linux PC 上使用 Python 在模拟器模式下工作。 是否可以为此使用匿名凭据,这样我就不必创建新的凭据?

在运行firebase emulators:start

第一种方法:

from firebase_admin import credentials, firestore, initialize_app

project_id = 'my_project_id'

cred = credentials.ApplicationDefault()
initialize_app(cred, {'projectId': project_id})
db = firestore.client()

这引发了以下异常:

DefaultCredentialsError:无法自动确定凭据。 请设置 GOOGLE_APPLICATION_CREDENTIALS 或明确创建凭据并重新运行应用程序。 有关详细信息,请参阅https://cloud.google.com/docs/authentication/getting-started

第二种方法:

from google.auth.credentials import AnonymousCredentials
from google.cloud.firestore import Client

cred = AnonymousCredentials()

db = Client(project=project_id, credentials=cred)

这行得通,但随后我尝试使用以下 Python 代码从数据库中访问我已使用 Web 界面手动插入到数据库中的文档:

doc = db.collection('my_collection').document('my_doc_id').get()

然后我收到以下错误,这可能表明匿名凭据不起作用:

PermissionDenied:403 缺少或权限不足。

思绪

这是一个非常复杂的系统,尽管我已经阅读了大量文档页面、观看了教程视频等,但似乎需要设置无穷无尽的配置迷宫才能使其正常工作。 如果我能以最小的努力让 Firestore 在我的本地 PC 上运行,看看数据库是否适用于我的应用程序,那就太好了。

谢谢!

如果设置了环境变量,则方法 2 有效。 在以下更改localhost:8080到使用firebase emulators:start时显示的 Firestore 服务器地址

import os
os.environ['FIRESTORE_EMULATOR_HOST'] = 'localhost:8080'

我不知道如何使用firebase_admin Python package 使其与上面的方法 1 一起使用。也许其他人知道。

另请注意,模拟的 Firestore 数据库将在服务器关闭时丢弃其所有数据。 要持久化和重用数据,请使用如下命令启动模拟器:

firebase emulators:start --import=./emulator_data --export-on-exit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM