本地使用Firebase Auth激活链接遇auth/invalid-dynamic-link-domain错误
解决Firebase Auth本地环境激活邮件链接的auth/invalid-dynamic-link-domain错误
错误原因
你填的dynamicLinkDomain是本地HTTP地址,这不符合Firebase的要求——动态链接域名必须是Firebase项目中已配置的合法域名,要么是Firebase提供的默认域名(格式如xxx.page.link),要么是你自己验证过的自定义域名,本地IP+端口的地址不被Firebase认可。
解决方案
方案1:使用Firebase提供的默认动态链接域名
- 打开Firebase控制台,进入你的项目,找到「动态链接」模块
- 复制控制台里显示的默认动态链接域名(比如
your-project.page.link) - 替换你配置中的
dynamicLinkDomain值,同时修正原代码里的语法错误(android.packageName后缺少逗号):
const actionCodeSettings = { url: 'exp://192.168.18.30:19001', handleCodeInApp: true, iOS: { bundleId: 'xxx.xxx.xxx' }, android: { packageName: 'xxx.xxx.xxx', installApp: true, minimumVersion: '12' }, dynamicLinkDomain: 'your-project.page.link' // 替换为你的Firebase动态链接域名 };
这样Firebase会把你的本地Expo地址包装成合法的动态链接,邮件中的链接会正常跳转到你的本地应用。
方案2:本地测试时禁用App内处理(仅适用于不需要在App内处理链接的场景)
如果只是简单测试邮件发送,不需要在App内直接处理激活链接,可以把handleCodeInApp设为false,此时可以省略dynamicLinkDomain参数:
const actionCodeSettings = { url: 'exp://192.168.18.30:19001', handleCodeInApp: false, iOS: { bundleId: 'xxx.xxx.xxx' }, android: { packageName: 'xxx.xxx.xxx', installApp: true, minimumVersion: '12' } };
补充说明
动态链接的作用是把自定义的跳转地址(比如你的本地Expo地址)包装成Firebase认可的域名链接,同时实现跨平台的跳转逻辑(比如判断用户是否安装App,引导安装或直接跳转),所以必须使用Firebase配置过的域名才能生效。
内容的提问来源于stack exchange,提问作者greg
相关产品推荐
相关产品推荐

