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

Firebase验证邮件动态链接已添加白名单仍被拦截(提示Invalid Dynamic Link - Blocked)

我完全能理解被这个问题卡了一个多月的烦躁感,咱们一步步拆解可能的问题,帮你解决这个动态链接被拦截的情况:

一、核心问题:授权域与动态链接允许列表配置遗漏

你提到已经加了白名单,但目前的规则只覆盖了动态链接自身的域名myapp.page.link,这大概率遗漏了两个关键域名,导致链接被拦截:

  1. Firebase Auth授权域未包含跳转目标域名
    你的代码里actionCodeSettings的url是https://myapp.org/verifyEmail(验证完成后的跳转链接),这个域名myapp.org必须添加到Firebase控制台的「Authentication」→「设置」→「授权域」中。
    Firebase Auth会严格限制哪些域名可以作为验证后的跳转目标,如果不在授权域里,会直接拦截请求,进而导致动态链接报错“Blocked”。

  2. 动态链接允许列表缺少被包装的原始链接域名
    你生成的动态链接里,link参数指向的是Firebase Auth官方的action链接(https://myfirebaseproject.firebaseapp.com/__/auth/action...),同时还包含了你的跳转目标continueUrl。
    你需要在Firebase控制台的「动态链接」→「你的动态链接域名(myapp.page.link)」→「设置」→「允许的域名」中,添加以下两个规则:

    • https://myfirebaseproject.firebaseapp.com/*(Firebase Auth官方action链接的域名)
    • https://myapp.org/*(你的跳转目标域名)
      动态链接服务会校验被包装的原始链接是否在允许列表内,目前你的配置没覆盖这两个域名,所以判定链接不合法。

二、确认动态链接域名的有效性

检查myapp.page.link这个动态链接域名是否满足:

  • 已在Firebase控制台完成所有权验证(比如DNS记录验证或HTML文件验证)
  • 已正确关联到你的当前Firebase项目
    如果域名未验证或未关联,生成的动态链接会被系统直接拦截。

三、你的代码是否有问题?

整体代码逻辑是正确的,只有几个不影响功能的小细节可以优化:

  • 你声明了const auth = getAuth();但未使用,后面直接用firebase.auth(),可以统一写法(比如都用getAuth())
  • userEmail变量定义后未使用,可直接删除
  • iOS/Android的bundleId、handleCodeInApp等核心参数的配置都符合App内处理验证的需求,没有错误

四、测试修复步骤

  1. 先把上面提到的两个关键域名添加到对应的授权/允许列表中
  2. 清空浏览器缓存,重新生成验证邮件并点击链接测试
  3. 如果还是报错,可以尝试直接访问动态链接里link参数对应的原始URL(把%26替换成&解码后),以此区分是Auth的问题还是动态链接的问题

备注:内容来源于stack exchange,提问作者newbie coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:33:08