如何在没有服务帐户密钥的情况下使用Python连接到Firestore?

时间:2019-02-18 04:28:45

标签: javascript python firebase google-cloud-firestore

我需要使用python连接到Firestore数据库,但是我不想使用服务帐户密钥。我可以仅使用ProjectId和ApiKey使用python连接吗?

使用javascript可以做到这一点:

firebase.initializeApp({
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
});

但是我无法使用Python做到这一点:

self._g_credential, self._project_id = google.auth.default(scopes=_scopes)
  File "/home/caique/.local/lib/python2.7/site-packages/google/auth/_default.py", line 306, in default
    raise exceptions.DefaultCredentialsError(_HELP_MESSAGE)
google.auth.exceptions.DefaultCredentialsError: Could not automatically 
determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or 
explicitly create credentials and re-run the application.

这是我现在的代码:

import firebase_admin
from firebase_admin import credentials, firestore, auth

cred = credentials.ApplicationDefault()
firebase_admin.initialize_app(cred, {
'projectId': "my-project-id",
'apiKey': "my-api-key"
})

db = firestore.client()

1 个答案:

答案 0 :(得分:0)

您必须使用服务帐户进行连接。这就是授权您的代码访问项目中的Firestore和其他Google Cloud资源的原因。

您唯一不需要提供服务帐户的时间就是代码在安全的Google Cloud环境(例如Cloud Functions或App Engine)中运行时。在这种情况下,Google Cloud库将自动从执行环境中获取默认服务帐户凭据。但是,当在自己的计算机上运行时,您需要使用服务帐户进行初始化。