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
相关产品推荐
相关产品推荐

