Firebase邮箱验证重定向依赖即将停用的Dynamic Links,该如何处理?
问题描述
我希望实现Firebase邮箱验证后重定向回应用,使用的代码如下:
User? user = FirebaseAuth.instance.currentUser; if (user != null && !user.emailVerified) { var actionCodeSettings = ActionCodeSettings( url: 'https://www.example.com/?email=${user.email}', dynamicLinkDomain: 'example.page.link', androidPackageName: 'com.example.android', androidInstallApp: true, androidMinimumVersion: '12', iOSBundleId: 'com.example.ios', handleCodeInApp: true, ); await user.sendEmailVerification(actionCodeSettings); }
已替换域名及相关配置,但出现以下错误:
请在Firebase控制台中激活Dynamic Links并同意服务条款。[FDL域名未配置]
同时发现Firebase控制台显示Dynamic Links即将停用,请问该如何处理?
解决方案
一、临时解决当前报错(过渡用)
若需暂时解决Dynamic Links的配置错误,可按以下步骤操作:
- 进入Firebase控制台的Dynamic Links模块,同意服务条款
- 配置并验证
example.page.link域名,确保项目的Android/iOS应用已关联该域名 - 重新运行代码即可触发验证邮件
⚠️ 注意:Firebase已宣布Dynamic Links即将停用,此方案仅适合短期过渡,不建议长期依赖。
二、长期替代方案:使用原生App Links/Universal Links
Firebase官方推荐用Android App Links 和 iOS Universal Links 替代Dynamic Links,实现验证后跳转回应用的功能,具体步骤如下:
1. 配置自定义域名的链接验证
- Android(App Links):
- 在Firebase控制台应用设置中启用App Links,绑定你的自定义域名(如
https://www.example.com) - 在
AndroidManifest.xml中添加intent-filter,关联该域名的验证路径 - 上传
assetlinks.json文件到域名的.well-known目录完成验证
- 在Firebase控制台应用设置中启用App Links,绑定你的自定义域名(如
- iOS(Universal Links):
- 在Firebase控制台应用设置中启用Universal Links,绑定自定义域名
- 在
Info.plist中添加关联域名配置及NSUserActivityTypes - 上传
apple-app-site-association文件到域名的.well-known目录完成验证
2. 修改ActionCodeSettings配置
移除dynamicLinkDomain参数,直接使用已验证的自定义域名作为url,保持handleCodeInApp: true,示例代码:
User? user = FirebaseAuth.instance.currentUser; if (user != null && !user.emailVerified) { var actionCodeSettings = ActionCodeSettings( url: 'https://www.example.com/verify-email?email=${user.email}', androidPackageName: 'com.example.android', androidInstallApp: true, androidMinimumVersion: '12', iOSBundleId: 'com.example.ios', handleCodeInApp: true, ); await user.sendEmailVerification(actionCodeSettings); }
3. 处理应用内跳转逻辑
- Android:在
MainActivity或自定义Link处理页面中,解析App Links携带的验证code,调用FirebaseAuth.instance.checkActionCode()和applyActionCode()完成邮箱验证 - iOS:在
AppDelegate或SceneDelegate中处理Universal Links,提取验证code并执行邮箱验证逻辑
内容的提问来源于stack exchange,提问作者amirhossein ghabeli
相关产品推荐
相关产品推荐

