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

如何迁移Firebase邮箱链接认证以弃用Dynamic Links

Firebase邮箱链接认证迁移问题解答

问题梳理

你正在迁移Firebase邮箱链接认证以弃用Dynamic Links,已完成:

  • 修改Android的intent-filter,使用APP_ID.firebaseapp.com替代旧的.page.link URL
  • 在actionCodeSettings中添加linkDomain = "${APP_ID}.firebaseapp.com"配置

但遇到核心问题:

  1. 迁移指南步骤2要求用Admin SDK配置项目,但Go版Admin SDK没有ProjectConfigManager,无法直接转译示例代码
  2. Node.js示例缺乏上下文,不清楚如何调用updateProjectConfig函数
  3. 目前邮件链接仍用.page.link,靠重定向正常工作,但担心8月25日后失效

解决方案

1. Go版Admin SDK无ProjectConfigManager的替代方案

Firebase Admin SDK的Go版本目前未提供项目配置管理的相关API,你可以选择以下两种方式完成配置:

  • 临时使用Node.js脚本执行一次性配置:这是最简便的方式,因为项目配置更新是一次性操作,不需要集成到你的Go后端服务中。
  • 调用Firebase REST API:直接向https://firebase.googleapis.com/v1beta1/projects/{你的项目ID}/config发送PUT请求,请求体格式如下:
    {
      "mobileLinksConfig": {
        "domain": "你的APP_ID.firebaseapp.com"
      }
    }
    
    请求需要用服务账号密钥生成OAuth2令牌进行授权。

2. Node.js示例的完整上下文

指南中的代码片段是一次性执行的脚本,不需要作为回调传递。完整可运行的Node.js脚本如下:

const admin = require('firebase-admin');
// 替换为你的服务账号密钥路径
const serviceAccount = require('./service-account-key.json');

// 初始化Admin SDK
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

// 获取项目配置管理器实例
const projectConfigManager = admin.projectConfig();

const updateRequest = {
  mobileLinksConfig: {
      domain: '你的APP_ID.firebaseapp.com'
  }
};

// 定义并执行更新函数
const updateProjectConfig = async () => {
  try {
    const response = await projectConfigManager.updateProjectConfig(updateRequest);
    console.log('项目配置更新成功:', response);
  } catch (error) {
    console.error('更新项目配置失败:', error);
  }
};

// 直接调用执行
updateProjectConfig();

运行该脚本前,确保已安装firebase-admin依赖(npm install firebase-admin),执行一次即可完成项目配置。

3. 关于.page.link重定向的风险

目前的重定向是Dynamic Links的兼容过渡行为,但8月25日后Dynamic Links服务正式停止,.page.link域名将无法正常解析,必须完成步骤2的配置,让Firebase直接生成firebaseapp.com域名的邮箱验证链接,避免服务中断。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:40:07