Android初始化reCAPTCHA API遇ApiException:13错误求助
Android reCAPTCHA初始化出现ApiException 13的解决方法
错误信息
com.google.android.gms.common.api.ApiException: 13: Failed to fetch data for local cache - status: 400 at com.google.android.gms.common.api.internal.TaskUtil.setResultOrApiException(com.google.android.gms:play-services-base@@18.0.1:4) at com.google.android.gms.internal.recaptcha.zzax.zzc(com.google.android.gms:play-services-recaptcha@@16.0.1:1) at com.google.android.gms.internal.recaptcha.zzad.zza(com.google.android.gms:play-services-recaptcha@@16.0.1:3) at com.google.android.gms.internal.recaptcha.zzb.onTransact(com.google.android.gms:play-services-recaptcha@@16.0.1:3) at android.os.Binder.execTransactInternal(Binder.java:1184) at android.os.Binder.execTransact(Binder.java:1143)
初始化代码
Recaptcha.getClient(this) .init(API_KEY_HERE) .addOnSuccessListener( this ) { handle -> recaptchaHandle = handle } .addOnFailureListener( this ) { e -> e.printStackTrace() if (e is ApiException) { val apiException = e as ApiException val apiErrorStatus: Int = apiException.statusCode // Handle api errors ... } else { // Handle other failures ... } }
清单文件配置
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_api_key" />
解决步骤
- 确认API密钥类型正确:当前清单配置的是地理服务(Geo)API密钥,但reCAPTCHA需要专用的Android版reCAPTCHA密钥。前往Google Cloud控制台,创建或确认已生成对应密钥,确保密钥绑定的应用包名、SHA-1指纹与当前应用完全匹配。
- 替换初始化密钥:初始化代码中的
API_KEY_HERE必须是reCAPTCHA专用密钥,而非地图服务密钥。 - 添加网络权限:在AndroidManifest.xml中补充INTERNET权限,reCAPTCHA初始化需要联网获取验证数据:
<uses-permission android:name="android.permission.INTERNET" /> - 更新依赖版本:升级
play-services-recaptcha到较新稳定版(如18.0.0+),避免版本兼容问题。 - 清除缓存:清除应用缓存或设备上Google Play服务的缓存,解决本地缓存数据异常问题。
- 检查网络环境:确保设备网络正常,无代理、防火墙拦截reCAPTCHA请求。
内容的提问来源于stack exchange,提问作者Shashikant Patel
相关产品推荐
相关产品推荐

