Pri*_*ner 5 firebase google-cloud-functions
我需要创建一个Cloud Function来访问另一个项目中运行的Firebase DB。如果它正在访问当前项目中的数据库,则可以使用如下代码
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
Run Code Online (Sandbox Code Playgroud)
但是,我要functions.config().firebase返回的是其他项目的信息(最重要的是凭据)。有没有简单的方法可以做到这一点?
functions.config().firebase是保留的名称空间,您将无法覆盖它。但是,您可以自己进行跨项目初始化。这是我的处理方式:
首先,将其他项目的服务帐户下载到functions目录中。命名它<project_id>-sa.json。接下来,设置一些环境配置(app.fb_project_id仅是示例名称,不是必需的):
firebase functions:config:set app.fb_project_id="<the_project_id>"
Run Code Online (Sandbox Code Playgroud)
现在,在您的代码中,您可以像这样初始化Admin SDK:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
if (!functions.config().app || !functions.config().app.project_id) {
throw new Error('Cannot start app without app.fb_project_id config.');
}
const FB_PROJECT_ID = functions.config().app.fb_project_id;
const SERVICE_ACCOUNT = require(`./${FB_PROJECT_ID}-sa.json`);
admin.initializeApp({
databaseURL: `https://${FB_PROJECT_ID}.firebaseio.com`,
credential: admin.credential.cert(SERVICE_ACCOUNT)
});
Run Code Online (Sandbox Code Playgroud)
这将为另一个项目初始化Admin SDK。
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |