如何在 Google Cloud Platform 中以编程方式管理租户
How to manage tenants programatically in Google Cloud Platform
我正在编写后端服务来管理我在 gcp 中的租户。具体来说,我希望能够 create/delete 并在我的节点服务器上列出租户。
Firebase admin-sdk 应该能让我这样做。当我尝试 运行 时,出现此错误:
Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error: "Error fetching access token: Error while making request: getaddrinfo ENOTFOUND metadata.google.internal. Error code: ENOTFOUND".
我按照 this documentation 设置安装了 admin sdk。 (尝试 windows 和 linux,使用环境变量)
我使用 this documentation(获取现有租户)
这是我的代码:
var admin = require('firebase-admin');
var app = admin.initializeApp({
credential: admin.credential.applicationDefault(),
projectId: 'myProject'
});
admin.auth().tenantManager().getTenant("myTenant")
.then((tenant) => {
console.log(tenant.toJSON());
})
.catch((error) => {
// Handle error.
console.log(error.message)
});
const someOtherStuff = () =>...
module.exports = {
someOtherStuff
}
编辑:我运行使用 Express 在本地节点服务器上使用此代码。我正在使用 Windows 台计算机和 Linux 台计算机。结果在两个系统上是一样的。
我能够通过更改初始化来解决该问题。我没有使用环境变量,而是直接使用服务帐户密钥文件,如 here
所述
我如何使用它的一些示例代码:
var admin = require('firebase-admin');
var {getAuth} = require('firebase-admin/auth');
var serviceAccount = require('/path/to/serviceAccountKey.json');
// Initialize the default app using seriveAccount instead of environment variables
var app = admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const createTenant = async (tenantName) => getAuth(app).tenantManager().createTenant({
displayName: tenantName,
emailSignInConfig: {
enabled: true,
passwordRequired: true, // Email link sign-in enabled.
}
}).then((createdTenant) => {
return createdTenant.toJSON();
}).catch((error) => {
console.log("tenant could not be created. " + error.message);
});
//some other stuff...
module.exports = {
createTenant,
someOtherStuff,
}
我正在编写后端服务来管理我在 gcp 中的租户。具体来说,我希望能够 create/delete 并在我的节点服务器上列出租户。
Firebase admin-sdk 应该能让我这样做。当我尝试 运行 时,出现此错误:
Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error: "Error fetching access token: Error while making request: getaddrinfo ENOTFOUND metadata.google.internal. Error code: ENOTFOUND".
我按照 this documentation 设置安装了 admin sdk。 (尝试 windows 和 linux,使用环境变量) 我使用 this documentation(获取现有租户)
这是我的代码:
var admin = require('firebase-admin');
var app = admin.initializeApp({
credential: admin.credential.applicationDefault(),
projectId: 'myProject'
});
admin.auth().tenantManager().getTenant("myTenant")
.then((tenant) => {
console.log(tenant.toJSON());
})
.catch((error) => {
// Handle error.
console.log(error.message)
});
const someOtherStuff = () =>...
module.exports = {
someOtherStuff
}
编辑:我运行使用 Express 在本地节点服务器上使用此代码。我正在使用 Windows 台计算机和 Linux 台计算机。结果在两个系统上是一样的。
我能够通过更改初始化来解决该问题。我没有使用环境变量,而是直接使用服务帐户密钥文件,如 here
所述我如何使用它的一些示例代码:
var admin = require('firebase-admin');
var {getAuth} = require('firebase-admin/auth');
var serviceAccount = require('/path/to/serviceAccountKey.json');
// Initialize the default app using seriveAccount instead of environment variables
var app = admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const createTenant = async (tenantName) => getAuth(app).tenantManager().createTenant({
displayName: tenantName,
emailSignInConfig: {
enabled: true,
passwordRequired: true, // Email link sign-in enabled.
}
}).then((createdTenant) => {
return createdTenant.toJSON();
}).catch((error) => {
console.log("tenant could not be created. " + error.message);
});
//some other stuff...
module.exports = {
createTenant,
someOtherStuff,
}