我的目标是利用GCP的Firestore Python 3 API。我已经创建了一个服务帐户,并按照official documentation进行设置。但是,对Firestore的任何请求仍然会导致google.api_core.exceptions.PermissionDenied: 403 Missing or insufficient permissions
错误。我确保Firestore数据库规则允许在Firebase控制台中进行所有读取和写入操作。我已将Owner
和Cloud Datastore Owner
角色都添加到我的服务帐户中,但无济于事。我尝试过两种方式提供凭据,但两种方法均未证明是成功的:
from google.cloud import firestore
# Method #1
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = os.getcwd() + "/credentials.json"
db = firestore.Client()
# Method #2
from google.oauth2.service_account import Credentials
db = firestore.Client(project="my-project-id",
credentials=Credentials.from_service_account_file("credentials.json"))
我已经用完了所有选项,希望能解决此问题。
事实证明,执行此代码很重要。我是在GCP的Compute Engine VM实例中执行它的,显然必须在VM的Cloud API访问范围中启用相应的云服务。 This答案特别解决了我的问题。