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

Firebase手机号验证码验证报错「Operation is not allowed」问题求助

Firebase手机号验证码验证报错「Operation is not allowed」问题求助

兄弟,我之前做Firebase电话登录的时候也踩过一模一样的坑!看到你已经配置了SHA指纹、开了电话登录方法但还是报这个错,结合你的代码给你梳理几个最可能的排查方向,一步步来:

  • 再死磕一遍Firebase控制台的电话登录配置
    别嫌麻烦,再去「项目设置 → 认证 → 登录方法」里确认:

    • 电话登录的开关确实是启用状态(有时候手滑碰一下就关了,我就干过这事)
    • 有没有在「电话登录」的设置面板里,把你当前测试用的Android应用的包名+SHA-1/SHA-256指纹都加全?尤其是debug和release环境的指纹要分开加——如果你现在用Android Studio的debug模式跑代码,一定要确保debug的SHA指纹已经添加,别只加了release的!
  • 立刻更新你的google-services.json文件
    只要你最近修改过SHA指纹、登录方法这类配置,必须重新下载最新的google-services.json文件,替换到项目的app/目录下,然后Clean Project再Rebuild一次。旧配置文件里的信息不匹配,是最容易被忽略的隐形坑!

  • 确认手机号格式绝对标准
    你的代码里传的是phoneNumberWithPlus,要确保这个号码是纯国际标准格式:比如中国大陆的号码必须是+8613xxxxxxxxx,不能有空格、括号、横杠或者其他多余符号。格式不对的话,Firebase会直接拒绝请求,报类似的权限错误。

  • 排查API密钥的应用限制
    去「项目设置 → 通用 → API密钥」里,找到你的Android应用对应的API密钥(一般是开头为AIza的那个):

    • 如果这个密钥设置了应用限制(比如只允许特定包名和SHA的应用调用),一定要确保你测试应用的包名、SHA指纹和限制里的内容完全一致
    • 要是拿不准,先临时把限制改成「无限制」测试一下(测试完记得改回去,别留安全隐患),如果能正常发验证码了,说明就是这个限制的问题
  • 检查设备的Google Play服务状态
    Firebase Auth的电话登录依赖Google Play服务,如果你的测试设备是国产安卓机,可能存在Google Play服务缺失或者版本过低的情况。可以装个「Google Play服务安装器」更新到最新版,或者换一台带完整Google服务的设备试试。

  • 代码细节快速核对
    看了你的代码,逻辑上没大问题,但可以再确认两个小地方:

    • fbAuth = FirebaseAuth.getInstance()的初始化是对的,不用额外在Application类里提前初始化,getInstance()会自动处理
    • 调用PhoneAuthProvider.verifyPhoneNumber()时,builder.setActivity(this)传的是当前Activity上下文,这个没问题

最后给个小技巧:如果还是排查不出来,把onVerificationFailed里的异常用Log打全(比如Log.e("FirebaseAuthError", "验证失败", e)),Toast只能显示部分错误信息,Log里的完整堆栈能给出更精准的提示。

我当时就是因为漏加了debug环境的SHA指纹,卡了一下午,你先从这个点查起,大概率能解决!

火山引擎 最新活动