GA4认证报错401:Laravel7+PHP7.3下如何用Property ID获取页面浏览量
解决GA4 401认证错误及Property ID查询页面浏览量方案
一、修复401认证错误
GA4不再支持UA时期的client_secrets.json OAuth认证方式,需改用服务账号密钥完成认证,步骤如下:
生成服务账号密钥
- 登录Google Cloud控制台,找到关联GA4的项目,进入「IAM与管理」→「服务账号」页面
- 点击「创建服务账号」,填写名称后完成创建
- 进入该服务账号详情页,切换到「密钥」标签,点击「添加密钥」→「创建新密钥」,选择JSON格式下载,保存为
ga4-service-account.json - 登录GA4后台,进入对应Property的「管理员」→「用户与权限」→「添加用户」,将服务账号的邮箱(JSON文件里的
client_email字段)添加为用户,授予「查看者」权限
Laravel项目配置
- 安装Google API客户端:
composer require google/apiclient:^2.0 - 将下载的
ga4-service-account.json放到项目storage/app/目录下 - 编写认证逻辑,初始化GA4客户端:
use Google\Client; use Google\Service\AnalyticsData; $client = new Client(); $client->setAuthConfig(storage_path('app/ga4-service-account.json')); $client->addScope(AnalyticsData::ANALYTICS_READONLY); $analyticsDataService = new AnalyticsData($client);
- 安装Google API客户端:
二、用Property ID获取全站页面浏览量
GA4中没有UA的View ID概念,使用格式为2XXXXXXX的Property ID进行查询,需调用Google Analytics Data API v1而非原Reporting API,示例代码如下:
// 替换为你的GA4 Property ID $propertyId = '2XXXXXXX'; // 构建查询请求 $request = new \Google\Service\AnalyticsData\RunReportRequest(); $request->setDateRanges([ new \Google\Service\AnalyticsData\DateRange([ 'startDate' => '30daysAgo', 'endDate' => 'today' ]) ]); $request->setMetrics([ new \Google\Service\AnalyticsData\Metric([ 'name' => 'screenPageViews' // GA4中页面浏览量用screenPageViews或pageViews,根据数据采集方式选择 ]) ]); // 执行查询 $response = $analyticsDataService->properties->runReport('properties/' . $propertyId, $request); // 处理结果 foreach ($response->getRows() as $row) { $pageViews = $row->getMetricValues()[0]->getValue(); echo "全站页面浏览量:{$pageViews}"; }
注意事项
- 确保服务账号已被正确添加到GA4 Property的权限列表,否则仍会出现认证错误
- GA4的指标命名与UA不同,
pageViews对应UA的页面浏览量,若使用App+Web数据采集,可使用screenPageViews - Laravel7需确保
google/apiclient版本适配,^2.0版本兼容PHP7.3
内容的提问来源于stack exchange,提问作者khawla
相关产品推荐
相关产品推荐

