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

如何在Laravel中实现Firebase用户注册功能?

Laravel 基于 kreait/laravel-firebase 创建 Firebase 用户操作指南

前置配置

  • 安装扩展包:
    composer require kreait/laravel-firebase
    
  • 发布扩展配置文件:
    php artisan vendor:publish --provider="Kreait\Laravel\Firebase\ServiceProvider"
    
  • 配置Firebase服务凭证:将从Firebase控制台下载的服务账号JSON文件放到项目目录,在.env文件中添加配置:
    FIREBASE_CREDENTIALS=./storage/firebase-service-account.json
    
    路径可以根据自己的存放位置调整。

核心创建逻辑

你在Laravel Firebase包文档中找不到用户注册相关说明,是因为该包仅做了Firebase PHP SDK的Laravel服务容器绑定适配,用户管理等能力全部复用底层SDK的Auth模块,操作方法和原生PHP SDK完全一致。

创建用户的示例代码如下:

<?php

namespace App\Http\Controllers;

use Kreait\Firebase\Auth;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

class FirebaseUserController extends Controller
{
    public function __construct(protected Auth $firebaseAuth) {}

    public function store(Request $request)
    {
        // 业务参数校验,可根据需求调整
        $validated = $request->validate([
            'email' => 'required|email',
            'password' => 'required|min:6',
            'display_name' => 'nullable|string|max:255',
            'phone_number' => 'nullable|string',
        ]);

        try {
            $newUser = $this->firebaseAuth->createUser([
                'email' => $validated['email'],
                'password' => $validated['password'],
                'displayName' => $validated['display_name'] ?? '',
                // 手机号需符合E.164格式,例如中国手机号为+8613xxxxxxxxx
                'phoneNumber' => $validated['phone_number'] ?? null,
                'emailVerified' => false,
                'disabled' => false,
            ]);

            // 创建成功返回用户信息,$newUser包含Firebase生成的uid等全量用户属性
            return response()->json([
                'code' => 0,
                'data' => [
                    'uid' => $newUser->uid,
                    'email' => $newUser->email,
                    'display_name' => $newUser->displayName,
                ]
            ]);
        } catch (\Kreait\Firebase\Exception\Auth\EmailAlreadyExists $e) {
            return response()->json(['code' => 1, 'message' => '该邮箱已被注册'], 400);
        } catch (\Kreait\Firebase\Exception\Auth\PhoneNumberAlreadyExists $e) {
            return response()->json(['code' => 1, 'message' => '该手机号已被绑定'], 400);
        } catch (\Exception $e) {
            return response()->json(['code' => 1, 'message' => '创建用户失败:'.$e->getMessage()], 500);
        }
    }
}

如果不需要依赖注入,也可以直接通过服务容器调用:

$createdUser = app('firebase.auth')->createUser($userProperties);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:06:02