You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android应用集成Google reCAPTCHA遇12008错误:Site Key类型无效的问题咨询

Android应用集成Google reCAPTCHA遇12008错误:Site Key类型无效的问题咨询

我之前在集成SafetyNet reCAPTCHA时也碰到过这个一模一样的12008错误,完全是因为用错了密钥类型!下面给你逐一解答问题,帮你快速解决:

一、Android应用需要哪种reCAPTCHA密钥?

你需要的是Android专用的reCAPTCHA密钥,不是控制台默认显示的Web端密钥。Web密钥仅适用于网页场景,和Android应用的SafetyNet/Play Integrity验证不兼容,这就是你触发12008错误的核心原因。

二、如何创建Android专用的reCAPTCHA密钥?

你可能没注意到控制台里的Android选项,正确步骤如下:

  • 打开Google reCAPTCHA官方管理控制台
  • 点击「创建密钥」,填写一个标识用的标签(比如你的应用名称)
  • 在「reCAPTCHA类型」中选择reCAPTCHA v2(推荐选「I'm not a robot」复选框类型,适配你当前用的SafetyNet API)或reCAPTCHA v3
  • 重点:在「应用限制」区域,选择**「Android应用」**(不要选「网站」)
  • 输入你的应用的精确包名(必须和AndroidManifest.xml里的包名完全一致)
  • 输入应用签名的SHA-1指纹(debug和release环境的SHA-1都建议添加,否则debug测试时会验证失败)
  • 同意条款后提交,就能得到Android专用的Site Key和对应的Secret Key

三、Web密钥能不能配置成Android可用?

完全不行。Web密钥和Android密钥是为不同场景设计的独立密钥,没有办法通过配置让Web密钥适配Android应用的reCAPTCHA验证,必须重新创建Android专用密钥。

四、针对你现有代码的优化建议

  1. 替换密钥:把你strings.xml里的recaptcha_site_key替换成刚创建的Android专用Site Key
  2. 后端验证配对:你后端请求RECAPTCHA_URL时,要使用和这个Android Site Key配对的Secret Key,不能用Web密钥的Secret Key
  3. 考虑迁移到Play Integrity:Google已经宣布SafetyNet的reCAPTCHA功能将逐步被Play Integrity API取代,新开发的话建议直接使用Play Integrity的recaptchaAssessment方法,安全性和兼容性更好
  4. 错误处理增强:在addOnFailureListener里可以加入错误码判断,比如捕获到12008时直接提示用户密钥类型错误,更友好

测试注意事项

  • 确保测试设备上安装的应用包名、签名指纹和你创建密钥时填写的完全匹配
  • 如果用debug包测试,务必把debug签名的SHA-1添加到密钥的限制列表中,否则会出现验证失败的情况

另外,你的现有代码逻辑是没问题的,只要替换正确的Android专用密钥,就能解决12008错误,顺利完成验证流程。

内容来源于stack exchange

火山引擎 最新活动