使用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(); } }
额外验证建议
提交表单前先做前端校验:
- 校验密码长度≥6位
- 校验邮箱格式合法性
- 手机号输入限制位数,避免提交无效号码
内容的提问来源于stack exchange,提问作者extrabacon
相关产品推荐
相关产品推荐

