Android CredentialManager:createCredential()方法调用报错求助
排查Android Credential Manager Passkey创建时的请求验证失败问题
针对你遇到的createPasskey failed with exception: The incoming request cannot be validated错误,按以下步骤逐一排查:
1. 确认assetlinks.json的部署与内容正确性
- 必须部署在域名根目录下的.well-known文件夹,路径为
https://<你的域名>/.well-known/assetlinks.json,不能放在子目录里,且访问时不能有301/302重定向 - 文件中的
package_name必须和AndroidManifest里的applicationId完全一致,大小写都不能错 sha256_cert_fingerprints要匹配你当前测试用的签名证书指纹:调试版用调试签名的SHA256,发布版用正式签名的,很多人会搞混这两个导致验证失败- 直接用浏览器访问该链接,确保返回200状态码,且内容是标准的JSON格式,没有多余的空格或注释
2. 检查Passkey创建请求的参数
PublicKeyCredentialCreationOptions中的rp.id必须和assetlinks.json里的target.domain完全一致,不能带http://或https://,比如域名是example.com,rp.id就必须是example.com(如果assetlinks里的domain是www.example.com,那rp.id也要对应)- 确保
user.id是Uint8Array类型,不能直接传字符串,需要把用户ID转换成字节数组后传入
3. 验证设备与环境配置
- 测试设备需为Android 14及以上版本,或者Android 13设备已更新到支持Credential Manager的Google Play系统版本
- 确保设备上的Google Play服务是最新版,可在Google Play商店中搜索Google Play服务并更新
- 如果用模拟器测试,必须选择带Google Play的镜像,且确保模拟器的Google服务正常运行
4. 查看详细日志定位问题
- 连接设备后执行ADB命令:
adb logcat -s CredentialManager,过滤Credential Manager相关日志,里面会包含更具体的验证失败原因,比如是assetlinks校验不通过,还是参数不匹配
内容的提问来源于stack exchange,提问作者Gaurav Goel
相关产品推荐
相关产品推荐

