Android集成Firebase认证时遭遇RecaptchaAction错误求助
解决Firebase认证Recaptcha Action失败(socket failed:EPERM)的问题
错误核心原因
socket failed:EPERM (Operation not permitted) 本质是应用的网络请求被系统拒绝,结合Recaptcha Action失败的提示,主要是网络权限缺失、网络安全配置限制,或Firebase基础配置问题导致。
解决方案
添加必要的网络权限
在AndroidManifest.xml的<manifest>标签内添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />其中
INTERNET权限为必须项,ACCESS_NETWORK_STATE用于辅助Recaptcha检测网络状态,保障正常运行。配置网络安全策略(针对Android 9+)
若应用targetSdkVersion >= 28,系统默认禁止明文网络流量,可能导致Recaptcha部分请求失败,可按以下步骤配置:- 在
res/xml目录下创建network_security_config.xml,内容如下:<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config> - 在
AndroidManifest.xml的<application>标签中引用该配置:<application ... android:networkSecurityConfig="@xml/network_security_config" ...>
- 在
验证Firebase基础配置
- 登录Firebase控制台,确认你的应用已启用Email/Password认证方式(路径:Authentication > Sign-in method)
- 检查
google-services.json文件是否放置在app模块根目录,且文件中的包名、SHA-1指纹与控制台配置完全一致
更新Firebase依赖版本
确保app/build.gradle中Firebase Auth的依赖为最新稳定版,避免版本兼容问题:dependencies { // 替换为最新稳定版 implementation 'com.google.firebase:firebase-auth:22.3.1' }排除测试环境问题
- 若使用模拟器测试,检查模拟器网络连接是否正常,能否访问外网
- 尝试在真机上运行测试,排除模拟器的网络限制
内容的提问来源于stack exchange,提问作者Chewietheshiba
相关产品推荐
相关产品推荐

