使用 Firebase Emulator 运行 Firebase Admin 时是否需要凭据?

Is credential necessary when running Firebase Admin with Firebase Emulator?

我正在 运行通过在不同终端上设置 Firebase 模拟器的功能框架在 python 上使用 Firebase Admin SDK,我有一个问题。

虽然这适用于 shell(zsh)...:[=​​19=]

# python
import firebase_admin
from firebase_admin import auth as admin_auth, firestore as admin_firestore, credentials

app_options = {'projectId': 'dev-some-project'}
firebase_admin.initialize_app(options=app_options)
db = admin_firestore.client()


def change_order_state(request):
    return 123

# shell
FIRESTORE_EMULATOR_HOST=localhost:8080 \
FIREBASE_AUTH_EMULATOR_HOST=localhost:9099 \
GOOGLE_APPLICATION_CREDENTIALS=./path_to_credential.json \
functions_framework --target=change_order_state --port=1234

但是,如果没有 GOOGLE_APPLICATION_CREDENTIALS,这对 shell 不起作用:

FIRESTORE_EMULATOR_HOST=localhost:8080 \
FIREBASE_AUTH_EMULATOR_HOST=localhost:9099 \

functions_framework --target=change_order_state --port=1234

错误日志显示:

google.auth.exceptions.DefaultCredentialsError:
Could not automatically determine credentials.
Please set GOOGLE_APPLICATION_CREDENTIALS or 
explicitly create credentials and re-run the application. 

是否可以在不设置 GOOGLE_APPLICATION_CREDENTIALS 的情况下使用 Firebase 模拟器 运行 Firebase Admin? 运行在模拟器上设置凭据时,我没有看到设置凭据的必要性。

或者任何其他解决方案都可以。我看到了这个方案只要能写成Python就可以了。

我不想设置GOOGLE_APPLICATION_CREDENTIALS的原因是我不想将凭证文件分发给所有开发人员,对于初始开发阶段来说它太重了。

[可选] ...如果没有凭据就无法 运行,那么在使用模拟器在本地计算机上 运行nning Firebase Admin SDK 时,为开发人员提供的最低 GCP 角色是什么。 Firebase 管理员角色对我来说似乎太强大了。

谢谢!

是的,一些凭据是必需的,因为它会查找凭据并应用 DefaultCredentials 函数,并且您遇到了 DefaultCredentialsError。

但您可以使用 AnonymousCredentials class

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

client = firestore.Client(credentials=credentials.AnonymousCredentials())