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

Android Java使用Firebase Auth UI跨设备同账号登录报凭证保存错误

异常触发原因

该异常由Firebase UI Auth集成的Google Smart Lock密码保存服务校验失败触发,错误码16对应「无符合要求的可用账号」,常见触发场景如下:

  • 当前设备未登录正常可用的Google账号,或登录的Google账号处于未验证、风控受限等异常状态,Smart Lock无法获取合法的账号载体存储凭证
  • 近期升级了firebase-ui-auth或play-services-auth依赖版本,新版Smart Lock的凭证存储校验逻辑更严格,旧版本的宽松校验规则被废弃
  • 目标登录账号已在Smart Lock中存储了多份存在冲突的凭证,触发去重校验失败
  • 测试/用户设备为国产ROM,Google Play服务的「读取账号信息」「后台同步」等必要权限被系统限制,Smart Lock无法正常调用系统能力
排查修复方案

紧急线上修复(优先恢复登录功能)

直接在Firebase Auth UI初始化时禁用Smart Lock功能,即可完全避免该异常抛出:

// 登录意图构建时新增禁用Smart Lock配置
startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(yourProviderList)
                // 新增此行关闭Smart Lock
                .setIsSmartLockEnabled(false)
                .build(),
        RC_SIGN_IN
);

兼容保留Smart Lock的优化方案

如果需要保留Smart Lock自动填充密码的能力,可做动态兼容处理:

  1. 先判断当前设备环境是否支持Smart Lock,仅符合条件时开启功能:
boolean enableSmartLock = GoogleApiAvailability.getInstance()
        .isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS
        && GoogleSignIn.getLastSignedInAccount(context) != null;

AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(yourProviderList)
        .setIsSmartLockEnabled(enableSmartLock)
        .build();
  1. 升级firebase-ui-auth到7.2.0及以上稳定版,官方已在该版本后新增了该异常的自动捕获降级逻辑,错误发生时会直接跳过凭证存储步骤,不会阻断用户正常登录。

根因排查步骤

  • 对比最近上线的版本依赖变更,确认是否升级过com.firebaseui:firebase-ui-auth、com.google.android.gms:play-services-auth相关组件,回滚到之前稳定运行的版本可快速验证是否为依赖变更导致
  • 测试复现时检查设备Google账号状态:确认是否登录了正常可用的Google账号,Google Play服务是否为最新版本,相关权限是否被禁用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:57:04