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

使用kreait/firebase-php创建Firebase用户报GuzzleHttp 400错误如何解决

问题排查及修复方案

核心触发原因

400 Bad Request代表你提交给Firebase的参数不符合接口要求,最常见的几个问题如下:

  • 手机号格式不符合E.164国际标准:你当前拼接的手机号前缀为+09,属于非法格式。E.164要求格式为+[国家码][无前置0的本地手机号],比如中国大陆手机号格式为+8613800138000,不得出现前导0的国家码前缀。
  • 密码长度不足:Firebase Auth要求密码最少6位,输入过短会直接报错。
  • 邮箱格式错误/已被注册:提交的邮箱不符合格式要求,或者该邮箱已经在你的项目用户池中存在。
  • 未开启对应登录方式:需要先进入Firebase控制台→Authentication→登录方式,启用「电子邮件/密码」登录选项。

修复代码(注册逻辑部分)

你原来的代码没有捕获异常,无法看到具体错误信息,先替换成下面的代码,即可拿到具体错误提示,同时修正手机号格式问题:

<?php
session_start();
include('dbcon.php');

if(isset($_POST['register_btn']))
{
    $fullname = trim($_POST['full_name']);
    $email = trim($_POST['email']);
    $phone = trim($_POST['phone']);
    $password = trim($_POST['password']);

    try {
        $userProperties = [
            'email' => $email,
            'emailVerified' => false,
            // 这里替换成你对应地区的国家码,比如中国大陆是+86,不要加前导0
            'phoneNumber' => '+86'.ltrim($phone, '0'),
            'password' => $password,
            'displayName' => $fullname,
        ];
        
        $createdUser = $auth->createUser($userProperties);

        if($createdUser) 
        {
            $_SESSION['status'] = "User Created Successfully!";
            header('Location: register.php');
            exit();
        }
    } catch (Exception $e) {
        // 把具体错误信息存在session里,方便排查
        $_SESSION['status'] = "User Creation Failed: ".$e->getMessage();
        header('Location: register.php');
        exit();
    }
}

额外验证建议

提交表单前先做前端校验:

  1. 校验密码长度≥6位
  2. 校验邮箱格式合法性
  3. 手机号输入限制位数,避免提交无效号码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:03