簡體   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