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

Flutter Firebase邮箱链接登录失效:仅获取到短动态链接

问题

我在Flutter项目中添加Email Link认证功能,发送邮件的代码如下:

Future signInWithEmailandLink(userEmail) async{
      var _userEmail= userEmail;
     return await _auth.sendSignInLinkToEmail( 
        email: _userEmail,
         actionCodeSettings: ActionCodeSettings(
           url: "https://mydomain.page.link/authentication",
           handleCodeInApp: true,
           androidPackageName:"com.abc.def",
           androidMinimumVersion: "1",
         )     ).then((value){
       print("email sent");
     });
   }

处理动态链接的代码如下:

void _handleLink() async {

    // Check if you received the link via `getInitialLink` first
    final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
    
    if (initialLink != null) {
     
      final Uri deepLink = initialLink.link;
    
      // Example of using the dynamic link to push the user to a different screen
      _handleSignInLink(initialLink);
      print("DeepLink received! $deepLink");
    
    }
    
    FirebaseDynamicLinks.instance.onLink.listen(
          (pendingDynamicLinkData) {
        // Set up the `onLink` event listener next as it may be received here
        if (pendingDynamicLinkData != null) {
    
          final Uri deepLink = pendingDynamicLinkData.link;
    
          // Example of using the dynamic link to push the user to a different screen
          _handleSignInLink(pendingDynamicLinkData);
          print("DeepLink received! $deepLink");
        }
      },
    );

}

邮件发送功能正常,但调用FirebaseAuth.instance.isSignInWithEmailLink(emailLink)始终返回false,因为获取到的emailLink(深度链接)仅为https://mydomain.page.link。手动复制邮件中的完整链接到代码中可正常登录,但无法在Flutter应用内获取完整链接,请问遗漏了什么配置或步骤?

解决方案

  • 检查Firebase动态链接域名配置
    确保Firebase控制台中配置的动态链接域名mydomain.page.link已正确关联项目,且转发规则未遗漏路径或参数,保证短链接能解析到带认证参数的完整长链接。

  • 完善ActionCodeSettings配置
    在ActionCodeSettings的url参数后添加占位参数,比如https://mydomain.page.link/authentication?email={email},让Firebase自动填充认证相关参数,避免参数丢失。

  • 验证动态链接解析逻辑
    在_handleSignInLink方法中,确认提取的是pendingDynamicLinkData.link的完整URI,而非仅域名。打印pendingDynamicLinkData完整内容,检查是否所有参数都被正确接收,排除代码截断参数的可能。

  • 检查平台深层链接配置

    • Android:确认AndroidManifest.xml中的intent-filter正确处理动态链接,android:scheme和android:host配置无误,未过滤链接参数。
    • iOS:确认Info.plist中的CFBundleURLSchemes和关联域名配置正确,保证动态链接参数能完整传递到应用内。
  • 确认动态链接参数传递规则
    发送邮件时Firebase会在url基础上追加oobCode、apiKey等认证参数,需在Firebase控制台动态链接设置中确保未移除这些必要参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:53:15