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

如何在Laravel中不使用BigQuery获取Firebase Analytics事件

在Laravel中不借助BigQuery获取Firebase Analytics事件的方案

首先明确:kreait/firebase-php和kreait/laravel-firebase包本身不支持直接拉取Firebase Analytics的历史事件数据,它们的Analytics相关能力仅局限于服务端发送事件、设置用户属性,这大概率是你觉得“无法正常工作”的核心原因。以下是不依赖BigQuery的可行实现方案:

一、排查kreait包的使用误区

如果你原本想用该包做事件查询,那方向错了。如果是包本身运行报错,可先做以下检查:

  • 确保安装最新版本:执行composer update kreait/laravel-firebase
  • 验证配置正确性:.env中需指定服务账号文件路径FIREBASE_CREDENTIALS=storage/app/firebase-service-account.json,并确认config/firebase.php已正确加载配置

二、不借助BigQuery的实现方案

方案1:调用Firebase Analytics Reporting API获取聚合数据

如果仅需要事件的统计聚合结果(而非原始事件明细),可以用Google Analytics Reporting API v4实现:

  1. 启用API并准备认证:
    在Google Cloud控制台启用「Analytics Reporting API v4」,使用Firebase服务账号密钥生成带https://www.googleapis.com/auth/analytics.readonly权限的OAuth2令牌。
  2. Laravel中调用API示例:
    use GuzzleHttp\Client;
    
    $accessToken = '生成的OAuth2令牌'; // 可通过Google Auth库或kreait包的Auth模块生成
    $client = new Client();
    
    $response = $client->post('https://analyticsreporting.googleapis.com/v4/reports:batchGet', [
        'headers' => [
            'Authorization' => "Bearer {$accessToken}",
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'reportRequests' => [
                [
                    'viewId' => '你的Analytics视图ID', // 在Firebase控制台Analytics设置中获取
                    'dateRanges' => [['startDate' => '7daysAgo', 'endDate' => 'today']],
                    'metrics' => [['expression' => 'ga:events']],
                    'dimensions' => [['name' => 'ga:eventAction']],
                ]
            ]
        ]
    ]);
    
    $analyticsData = json_decode($response->getBody(), true);
    

方案2:前端同步事件到Laravel数据库

如果需要原始事件明细,可在前端发送Firebase事件的同时,将数据同步到你的Laravel后端:

  1. 前端代码示例(Web端):
    // 发送Firebase原生事件
    firebase.analytics().logEvent('product_view', {
        product_id: 'PROD001',
        category: 'electronics'
    });
    
    // 同步到Laravel API
    fetch('/api/firebase-events', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content
        },
        body: JSON.stringify({
            event_name: 'product_view',
            event_params: { product_id: 'PROD001', category: 'electronics' },
            user_id: firebase.auth().currentUser?.uid
        })
    });
    
  2. Laravel后端处理:
    • 创建事件表迁移:
      Schema::create('firebase_events', function (Blueprint $table) {
          $table->id();
          $table->string('event_name');
          $table->json('event_params');
          $table->string('user_id')->nullable();
          $table->timestamps();
      });
      
    • 创建API路由与控制器:
      // routes/api.php
      Route::post('/firebase-events', [FirebaseEventController::class, 'store']);
      
      // app/Http/Controllers/FirebaseEventController.php
      public function store(Request $request)
      {
          $validated = $request->validate([
              'event_name' => 'required|string',
              'event_params' => 'required|json',
              'user_id' => 'nullable|string'
          ]);
      
          \App\Models\FirebaseEvent::create($validated);
      
          return response()->json(['status' => 'success']);
      }
      

方案3:通过Firebase Cloud Functions中转事件

利用Cloud Functions监听Firebase Analytics事件,再将数据推送到Laravel API:

const functions = require("firebase-functions");
const axios = require("axios");

exports.syncToLaravel = functions.analytics.event('purchase').onLog((event) => {
    const eventData = {
        event_name: event.eventName,
        event_params: event.params,
        user_id: event.user.userId
    };

    return axios.post('https://your-laravel-domain.com/api/firebase-events', eventData, {
        headers: {
            'X-API-KEY': 'your-laravel-api-key' // 用于接口认证
        }
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:05:13