You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Admin SDK为Identity Platform多租户生成邮件链接时如何配置独立Action URL

解决方案

你需要的能力是Identity Platform原生支持的,有两种落地方式可以选择:

方案1:调用生成链接接口时动态传入自定义域名

Firebase Admin SDK的generatePasswordResetLink方法支持传入第二个参数ActionCodeSettings,可以直接指定本次生成链接使用的自定义Action URL,不需要依赖全局或租户级的预设配置,示例代码如下:

let tenantId = 'tenant-b-5678';
let email = 'foo@b.example.com';
// 租户与域名的映射可以存储在Cloud Firestore/Secret Manager等托管服务中,不需要硬编码在业务代码里
const tenantDomainMap = {
  'tenant-a-1234': 'https://a.example.com',
  'tenant-b-5678': 'https://b.example.com'
};

const auth = admin.auth().tenantManager().authForTenant(tenantId);
auth
    .generatePasswordResetLink(email, {
      url: `${tenantDomainMap[tenantId]}/reset-password`, // 这里传入对应租户的自定义Action URL
      handleCodeInApp: false
    })
    .then((resetUrl) => {
        console.log(resetUrl); // 生成的链接会直接使用你传入的域名
    });

方案2:租户层级独立配置邮件模板Action URL

你可以直接在Identity Platform的租户配置中为每个租户单独设置邮件模板的Action URL,配置完成后调用generatePasswordResetLink时不需要额外传参,会自动使用对应租户的配置生成链接,无需维护域名映射:

// 给指定租户配置独立的密码重置邮件模板(仅需执行一次,不需要每次生成链接都调用)
async function setTenantEmailTemplate(tenantId, domain) {
  const tenantAuth = admin.auth().tenantManager().authForTenant(tenantId);
  await tenantAuth.updateEmailTemplate('RESET_PASSWORD', {
    subject: '重置你的账户密码',
    body: '点击以下链接重置密码: %LINK%',
    actionUrl: `${domain}/reset-password`
  });
}

// 执行配置(首次创建租户时调用即可)
await setTenantEmailTemplate('tenant-a-1234', 'https://a.example.com');
await setTenantEmailTemplate('tenant-b-5678', 'https://b.example.com');

// 后续生成链接时和原有代码逻辑完全一致,自动使用租户独立配置的Action URL
let tenantId = 'tenant-b-5678';
let email = 'foo@b.example.com';
const auth = admin.auth().tenantManager().authForTenant(tenantId);
const resetUrl = await auth.generatePasswordResetLink(email);

内容的提问来源于stack exchange,提问作者anothermh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:39:03