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

Android 12设备Firebase邮箱验证发送失效问题咨询

解决方案

你之前查阅的App Links校验相关内容,对应的是「用户点击邮件内验证链接无法直接唤起App」的场景,和你遇到的Android 12设备上验证邮件发送异常的问题没有直接关联,按以下步骤排查修复即可:


1. 优先补全AndroidManifest必填配置(90%同类问题都是这个原因)

Android 12(API 31)起系统强制要求:所有声明了<intent-filter>的组件,必须显式指定android:exported属性,否则相关组件会被系统直接拦截无法正常注册。Firebase Auth旧版本SDK内部用于处理邮箱验证跳转的Activity默认没有适配这个规则,需要你手动在Manifest的<application>节点下补充声明:

<activity
    android:name="com.google.firebase.auth.internal.FederatedSignInActivity"
    android:exported="true"
    android:launchMode="singleTask"
    android:permission="com.google.android.c2dm.permission.SEND">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:host="替换为你自己的Firebase项目ID.firebaseapp.com"
            android:scheme="https" />
    </intent-filter>
</activity>

补完之后检查你项目里其他自定义的、带intent-filter的Activity/Service/Receiver,全部按照实际业务需求补上android:exported属性:需要被外部应用唤起就设为true,仅内部使用就设为false。
如果不想手动写这段配置,直接把项目依赖的Firebase BoM升级到最新稳定版即可,新版SDK已经自带了上述适配配置。


2. 业务代码补全回调,定位具体异常

你之前调用mAuth.getCurrentUser().sendEmailVerification()的核心逻辑本身没有版本兼容问题,但建议补上完整的任务回调,先确认请求是否真的提交到Firebase后端:

mAuth.getCurrentUser().sendEmailVerification()
    .addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            // 走到这里代表发信请求已经被Firebase服务端接收,后续收不到邮件和客户端代码、系统版本无关
            // 排查方向:Firebase控制台发信配额、邮箱垃圾邮件拦截、发信地址是否被收件服务商拉黑
        } else {
            // 走到这里打印具体异常信息,常见触发原因:
            // 1. 设备Google Play服务版本过低
            // 2. 应用未声明INTERNET网络权限
            // 3. 短时间内发信请求过多触发频率限制
            Exception e = task.getException();
            Log.e("EmailVerify", "send verify email failed", e);
        }
    });

注意:sendEmailVerification()的发信动作完全由Firebase云端服务完成,不需要调起本地邮件客户端,不存在Android 12系统拦截本地邮件应用导致发信失败的情况。


3. 若需修复点击验证链接无法跳回App的问题

如果你后续要处理「用户点邮件里的链接直接打开App,不需要走浏览器中转」的需求(也就是你之前查阅的App Links场景),不需要手动编写站点关联文件,只需要做两步:

  • 在Firebase控制台的邮箱验证配置页,正确填写你应用的包名、debug和release签名对应的SHA-256证书指纹
  • 等待5-10分钟让Firebase自动完成域名关联校验即可

避坑提醒

  • debug和release签名的SHA-256指纹不一致,两个都要加到Firebase控制台,否则对应包的App Links校验会失败
  • 不要在测试时用同一个邮箱短时间内重复触发多次发信请求,Firebase默认有短时间频率限制,超限后会被临时拦截15-30分钟
  • 不要手动修改Firebase自动托管的域名校验文件,否则会直接导致App Links校验失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:48:09