使用 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())
我正在 运行通过在不同终端上设置 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? 运行在模拟器上设置凭据时,我没有看到设置凭据的必要性。
或者任何其他解决方案都可以。我看到了
我不想设置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())