You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android与iOS端Google Recaptcha触发INTERNAL_ERROR及超时问题求助

Google Recaptcha初始化错误(INTERNAL_ERROR/超时)原因及解决方案

一、INTERNAL_ERROR 常见原因与修复

  • API密钥配置错误
    必须使用Google Cloud控制台为Android应用单独创建的密钥,绑定正确的包名和SHA-1指纹,不能混用iOS或通用密钥。同时确认Recaptcha Tasks API已在控制台启用。
  • 网络访问限制
    设备无法连接Recaptcha服务域名(如recaptcha.net),国内环境需确认网络能正常访问这些域名,企业内网要检查防火墙是否放行HTTPS 443端口的相关域名。
  • SDK版本问题
    依赖的Recaptcha SDK版本过旧可能存在bug,建议升级到Maven仓库的最新稳定版,比如com.google.android.recaptcha:recaptcha:1.2.0(以实际最新版为准)。

二、Timed out waiting for 10000 ms 常见原因与修复

  • 初始化时机过早
    Application.onCreate()阶段网络服务可能未完全就绪,建议延迟初始化,比如在首个Activity的onResume()中调用,或监听网络连接状态,待网络可用后再执行。
  • 超时时间设置过短
    默认10秒超时在弱网环境下不够,可通过RecaptchaSettings自定义超时:
    RecaptchaSettings settings = new RecaptchaSettings.Builder()
        .setTimeoutMs(15000) // 设为15秒
        .build();
    Recaptcha.getTasksClient(context, BuildConfig.RECAPTCHA_API_KEY, settings);
    
  • 主线程阻塞
    如果Application.onCreate()里有大量耗时操作(如IO、其他SDK初始化),会阻塞主线程导致Recaptcha请求超时,把这些耗时操作移到子线程执行。

三、通用排查与代码优化

  • 开启调试日志定位问题:
    Recaptcha.setLoggingEnabled(true);
    
  • 检查设备系统时间是否准确,时间偏差过大可能导致SSL验证失败。
  • 原代码中new Handler().post()是多余的,getTasksClient本身就是异步操作,优化后的代码:
    private void init(Context context) {
        RecaptchaSettings settings = new RecaptchaSettings.Builder()
            .setTimeoutMs(15000)
            .build();
        Recaptcha.getTasksClient(context.getApplicationContext(), BuildConfig.RECAPTCHA_API_KEY, settings)
            .addOnSuccessListener(client -> recaptchaTasksClient = client)
            .addOnFailureListener(e -> {
                e.printStackTrace();
                Log.d("RECAPTCHA", e.getMessage());
            });
    }
    

内容的提问来源于stack exchange,提问作者ajaymodi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:31:07