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

Android 10环境下Flutter应用Passkey登录失败问题求助

解决Android 10上Passkeys登录时的Missing Feature错误

这个问题的核心原因是Android 10系统本身不原生支持Passkeys的beginSignIn API,你遇到的auth_api_credentials_begin_sign_in(version8)特性依赖更高版本的Google Play Services提供向后兼容能力,而非系统内置功能。注册流程正常是因为注册相关API的兼容门槛更低,而登录的beginSignIn对Play Services版本要求更高。

给你几个具体的排查和解决步骤:

  • 检查并升级Google Play Services版本:Android 10设备必须确保Google Play Services升级到20.0.0及以上版本。可以在代码中加入版本校验逻辑,引导用户升级:

    import 'package:google_api_availability/google_api_availability.dart';
    
    Future<void> verifyPlayServices() async {
      final status = await GoogleApiAvailability.instance.isGooglePlayServicesAvailable();
      if (status != GooglePlayServicesAvailability.success) {
        // 提示用户升级Google Play Services
      }
    }
    
  • 添加特性兼容性预判断:在调用beginSignIn前,先检查设备是否支持目标特性,避免直接抛出错误:

    final credentialsClient = CredentialsApiClient();
    final isFeatureSupported = await credentialsClient.hasFeature('auth_api_credentials_begin_sign_in', 8);
    if (!isFeatureSupported) {
      // 切换到备用登录方式(如密码、短信验证码)
      return;
    }
    // 执行beginSignIn流程
    
  • 配置降级兜底逻辑:由于部分Android 10老旧设备可能无法升级到符合要求的Play Services版本,必须为这类用户提供传统登录方式作为兜底,不能强制仅使用Passkeys。

  • 核对依赖与Manifest配置:确保Flutter项目中google_sign_in或Passkeys相关依赖为最新稳定版,同时在AndroidManifest.xml中正确配置:

    <uses-permission android:name="android.permission.INTERNET" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    

需要注意:Passkeys在Android 10上的完整兼容依赖Google Play Services的更新,部分设备可能无法满足版本要求,因此兜底逻辑是必不可少的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:02:41