node.js - 如何使用 NodeJS 在 Firebase 模拟器中模拟身份验证多租户?
问题描述
我正在使用带有 nodejs firebase-admin-sdk 的 firebase 身份验证多租户。
当我尝试使用 firebase 模拟器套件创建身份验证租户时,我收到 404 错误。但是如果我使用我的生产火力库,同样的代码可以工作。
您可以通过在 nodejs 运行时运行以下代码来重现错误。我假设您正在运行 firebase 模拟器,并且您有一个带有服务帐户配置的 firebase 项目
const admin = require('firebase-admin')
process.env["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/serviceaccount.json" // replace with the path to your google cloud service account config
process.env['FIREBASE_AUTH_EMULATOR_HOST'] = "localhost:9099" // firebase emulator auth port
admin.initializeApp({
credential: admin.credential.applicationDefault()
});
admin.auth().tenantManager().createTenant({
displayName: 'Tenant123',
emailSignInConfig: {
enabled: true,
passwordRequired: false, // Email link sign-in enabled.
}
})
.then(newTenant => {
console.log('new tenancy created', newTenant)
})
.catch(error => console.error(error))
解决方案
Firebase Admin SDK 支持 Firebase 身份验证多租户。出于测试 Firebase 产品和服务的目的,我们将 Firebase 模拟器与 Firebase Admin SDK 结合使用,但Firebase 身份验证多租户支持需要 Google Cloud 的身份平台 (GCIP)。
因此,我们不能在 Firebase Local Emulator 内部使用 Firebase Authentication Multi-tenancy,因为目前模拟器内部没有 Multi-tenancy 的功能。
如果您想拥有此功能,您可以在 Firebase 中提出功能请求。
推荐阅读
- spring-boot - 无法将类型“java.lang.String”的属性值转换为属性“date_added”所需的类型“java.util.Date”
- java - 字符串索引超出范围。Java 春季启动
- javascript - P5阵列交集
- tcp - 基于 tshark 间隔的输出中所需的时间戳
- html - 我可以为伪元素添加样式吗?
- c# - 搜索到的数据未加载到 asp.net 表单中的数据网格视图?
- php - 将 Laravel 版本从 7.x 更新到 8.0
- javascript - 使用带有预加载 HTML 的 React
- python-3.x - 为什么递归比python3中的迭代慢?
- jquery - 使用 Jquery UI 排序除前三个单元格外的表行排序