Sam*_*mmy 3 firebase google-cloud-functions firebase-admin
我正在尝试编写一个函数,当用户写入默认数据库时写入不同的数据库,我做了我的研究,但我有点困惑
我在firebase上看到了这个
var admin = require('firebase-admin');
var serviceAccount =
require('path/to/serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL:
'https://<DATABASE_NAME>.firebaseio.com'
});
Run Code Online (Sandbox Code Playgroud)
还有这个
const app1 = firebase.initializeApp({
databaseURL: "https://testapp-1234-1.firebaseio.com"
});
const app2 = firebase.initializeApp({
databaseURL: "https://testapp-1234-2.firebaseio.com"
}, 'app2');
// Get the default database instance for an app1
var database1 = firebase.database();
// Get a database instance for app2
var database1 = firebase.database(app2);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我们是否需要在使用云功能管理 SDK 时保存密钥的 service.json 文件
对于几乎所有典型用例,在 Cloud Functions 中使用 Firebase Admin SDK 时,您无需提供服务帐号。这是因为 Cloud Functions 为部署该函数的项目中的默认服务帐户提供凭据。(此帐户可以视为 Cloud Console 中的 App Engine 默认服务帐户。)
强烈建议不带参数初始化 Admin SDK 并接受此默认帐户:
const admin = require('firebase-admin');
admin.initializeApp(); // accept the default service account
Run Code Online (Sandbox Code Playgroud)
作为采用此默认设置的一部分,Admin SDK 还将了解您的默认实时数据库分片的 URL,以及您的默认 Cloud Storage 存储分区的 URL。您不需要提供这些值。因此,您的代码将更容易移植到其他项目。
如果您需要访问项目的非默认资源,您还可以初始化 firebase-admin 的其他实例以指向您明确配置的那些。这是您的第二个代码示例所说明的内容。如果您没有任何非默认资源可供访问,请不要为此烦恼。
如果服务帐号可以执行某些操作,您可以在 Cloud Console 中授予该角色。默认情况下,此帐户当前无法执行的一项值得注意的操作是对 blob 进行加密签名。实际上,这意味着它无法为存储在 Cloud Storage 中的对象生成签名 URL。这是在 Cloud Functions 中相当常见的事情。要解决此问题,您需要将 signBlob 角色授予默认服务帐户。
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |