云功能上的管理 SDK 是否需要 firebase sevices.json
Is firebase sevices.json needed for admin SDK on cloud functions
我正在尝试编写一个函数,当用户写入默认数据库时写入不同的数据库,
我做了我的研究,我有点困惑
我在 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'
});
还有这个
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);
所以我的问题是,在使用云功能管理 SDK 时,我们是否需要 service.json 保存密钥的文件
对于几乎所有典型用例,在 Cloud Functions 中使用 Firebase Admin SDK 时,您无需提供服务帐户。这是因为 Cloud Functions 为部署该函数的项目中的默认服务帐户提供了凭据。 (该账号可以看作是云控制台中的App Engine默认服务账号。)
强烈建议不带参数初始化 Admin SDK 并接受此默认帐户:
const admin = require('firebase-admin');
admin.initializeApp(); // accept the default service account
作为采用此默认设置的一部分,Admin SDK 还将了解您的默认实时数据库分片的 URL 和默认云存储存储桶的 URL。您不需要提供这些值。因此,您的代码将更容易移植到其他项目。
如果您需要访问项目的非默认资源,您还可以初始化 firebase-admin 的其他实例以指向您明确配置的资源。这就是您的第二个代码示例所说明的内容。如果您没有任何非默认资源可以访问,那么请不要为此烦恼。
如果服务帐户可以执行某些操作,您可以在云控制台中授予该角色。默认情况下,此帐户目前无法执行的一项值得注意的操作是对 blob 进行加密签名。实际上,这意味着它无法为存储在 Cloud Storage 中的对象生成 signed URLs。这是 Cloud Functions 中相当常见的事情。要解决此问题,您需要将 signBlob 角色授予默认服务帐户。
我正在尝试编写一个函数,当用户写入默认数据库时写入不同的数据库, 我做了我的研究,我有点困惑
我在 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'
});
还有这个
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);
所以我的问题是,在使用云功能管理 SDK 时,我们是否需要 service.json 保存密钥的文件
对于几乎所有典型用例,在 Cloud Functions 中使用 Firebase Admin SDK 时,您无需提供服务帐户。这是因为 Cloud Functions 为部署该函数的项目中的默认服务帐户提供了凭据。 (该账号可以看作是云控制台中的App Engine默认服务账号。)
强烈建议不带参数初始化 Admin SDK 并接受此默认帐户:
const admin = require('firebase-admin');
admin.initializeApp(); // accept the default service account
作为采用此默认设置的一部分,Admin SDK 还将了解您的默认实时数据库分片的 URL 和默认云存储存储桶的 URL。您不需要提供这些值。因此,您的代码将更容易移植到其他项目。
如果您需要访问项目的非默认资源,您还可以初始化 firebase-admin 的其他实例以指向您明确配置的资源。这就是您的第二个代码示例所说明的内容。如果您没有任何非默认资源可以访问,那么请不要为此烦恼。
如果服务帐户可以执行某些操作,您可以在云控制台中授予该角色。默认情况下,此帐户目前无法执行的一项值得注意的操作是对 blob 进行加密签名。实际上,这意味着它无法为存储在 Cloud Storage 中的对象生成 signed URLs。这是 Cloud Functions 中相当常见的事情。要解决此问题,您需要将 signBlob 角色授予默认服务帐户。