React Native应用Android 10无法创建Passkey问题求助
解决Android 10设备使用react-native-passkey创建Passkey失败的问题
针对你遇到的Android 10设备报错{"error": "Native error", "message": "Error: The incoming request cannot be validated"},可以从以下几个方向排查修复:
1. 修正RP ID配置
Android 10对WebAuthn的RP ID验证更严格,直接使用包名com.myapp不符合规范,需要调整为与应用关联的验证域名,同时完成Digital Asset Links配置:
- 将
rp.id改为你的验证域名(比如yourdomain.com),注意域名必须是顶级或二级域名,不能包含路径 - 在域名根目录放置
/.well-known/assetlinks.json文件,内容示例:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.myapp", "sha256_cert_fingerprints": ["你的APK签名SHA256指纹"] } }]
- 确保APK的签名指纹与文件中一致,可通过
keytool -list -v -keystore 你的密钥库文件获取指纹
2. 调整Resident Key参数
部分Android 10设备的平台验证器可能不强制支持Resident Key(可发现凭证),将authenticatorSelection.requireResidentKey从true改为preferred或false:
'authenticatorSelection': { 'authenticatorAttachment': 'platform', 'requireResidentKey': false, // 改为false或preferred 'userVerification': 'preferred', },
3. 验证Challenge编码格式
确保后端生成的Challenge是base64url编码且无填充字符:
- 检查你的
challenge值是否符合要求,避免使用普通base64编码(带+、/或=) - 若后端生成的是普通base64,需转换为base64url(将
+替换为-,/替换为_,去掉末尾的=)
4. 检查Google Play Services版本
Android 10的Passkey功能依赖Google Play Services,需确保设备上的Google Play Services版本≥20.0.0:
- 引导用户在设备的Google Play商店中更新Google Play Services
- 可在应用中添加版本检测逻辑,提示用户更新
内容的提问来源于stack exchange,提问作者Suppose
相关产品推荐
相关产品推荐

