【问题标题】:How to access Firebase Firestore from GCP Cloud Function如何从 GCP Cloud Function 访问 Firebase Firestore
【发布时间】:2019-06-02 23:10:34
【问题描述】:

我正在尝试从 GCP 云函数访问 Firebase Firestore 数据库 - 该函数不是 Firebase 项目的一部分 - 所以是两个独立的项目。当我配置/初始化数据库时,我得到一个权限错误

def hello_world(请求):

import firebase_admin
import flask
import json
from flask import request
from firebase_admin import credentials
from firebase_admin import firestore    


try: 
    firebase_admin.initialize_app(options={           
        'apiKey': '<appkey>',
        'authDomain': '<authdomain>',
        'databaseURL': '<url>',
        'projectId': '<projID>',
        'storageBucket': '<bucket>',
        'messagingSenderId': '<id>',
        'appId': '<app ID>'
    })
except:
    print("DB already init")


#end db init
db = firestore.client()
# end db setup

我希望/希望结果是初始化数据库,以便我可以读取/写入它,但我收到一个错误:

错误:函数崩溃。细节: 403 权限缺失或不足。

【问题讨论】:

    标签: python google-cloud-platform google-cloud-functions


    【解决方案1】:

    您似乎正在使用 web 的应用程序初始化设置,您需要使用 sdk 密钥。转到设置 -> 服务帐户 -> 并生成您的密钥。

    包括 json 文件而不是那些参数。希望这会有所帮助!

    【讨论】:

    • 谢谢!我对如何在 GCP 中包含 package.json 文件感到困惑?您将其存储在云存储中还是有办法将其直接嵌入到函数中?
    • 有几种方法可以做到这一点,如果这是为了入门,我建议将它作为你项目的一部分(一起上传),如果这更像是生产级别的东西,你将需要某种秘密管理,或者将其存储在云存储上并动态加载,无论哪种方式最适合您的用例 :)!
    • ok - 附加问题:我修改了代码以将 json 文件存储起来,并将其放入“blob”中:cred = credentials(blob.download_as_string()) firebase_admin.initialize_app(cred)仍然会产生错误。我不确定 initialize_app() 的语法?
    • 我以前从未使用过这种方式,本地将类似于 cred = credentials.Certificate('/path/to/serviceAccountKey.json') firebase_admin.initialize_app(cred)
    猜你喜欢
    • 2018-06-22
    • 2018-10-01
    • 2021-07-29
    • 2022-01-04
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多