Firebase验证邮件动态链接已添加白名单仍被拦截(提示Invalid Dynamic Link - Blocked)
Firebase验证邮件动态链接已添加白名单仍被拦截(提示Invalid Dynamic Link - Blocked)
我完全能理解被这个问题卡了一个多月的烦躁感,咱们一步步拆解可能的问题,帮你解决这个动态链接被拦截的情况:
一、核心问题:授权域与动态链接允许列表配置遗漏
你提到已经加了白名单,但目前的规则只覆盖了动态链接自身的域名myapp.page.link,这大概率遗漏了两个关键域名,导致链接被拦截:
Firebase Auth授权域未包含跳转目标域名
你的代码里actionCodeSettings的url是https://myapp.org/verifyEmail(验证完成后的跳转链接),这个域名myapp.org必须添加到Firebase控制台的「Authentication」→「设置」→「授权域」中。
Firebase Auth会严格限制哪些域名可以作为验证后的跳转目标,如果不在授权域里,会直接拦截请求,进而导致动态链接报错“Blocked”。动态链接允许列表缺少被包装的原始链接域名
你生成的动态链接里,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内处理验证的需求,没有错误
四、测试修复步骤
- 先把上面提到的两个关键域名添加到对应的授权/允许列表中
- 清空浏览器缓存,重新生成验证邮件并点击链接测试
- 如果还是报错,可以尝试直接访问动态链接里
link参数对应的原始URL(把%26替换成&解码后),以此区分是Auth的问题还是动态链接的问题
备注:内容来源于stack exchange,提问作者newbie coder
相关产品推荐
相关产品推荐

