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

GA4 API OAuth用户认证配置与数据获取问题咨询

GA4 适配自有平台用户权限体系对接方案

你之前测试使用服务账号凭证拉取数据的模式,鉴权主体是你自行创建的服务账号,而非当前在你平台完成授权的用户,因此才需要手动为每个GA4资源给服务账号分配权限。要对齐原有Universal Analytics的用户授权逻辑,完全不需要使用服务账号,直接沿用原有OAuth2.0授权流程即可,所有接口访问权限完全匹配授权用户自身的GA4权限,无需额外手动配置。

原有UA流程适配GA4的核心调整

  • 授权范围沿用原有的https://www.googleapis.com/auth/analytics即可,GA4完全兼容该权限范围,无需新增额外scope
  • 客户端初始化时不要加载服务账号JSON凭证,也不要设置GOOGLE_APPLICATION_CREDENTIALS环境变量,拿到用户授权生成的access token后,直接将token注入GA4的管理端、数据端客户端实例即可,逻辑和你之前给Google_Service_Analytics传入access token的方式完全一致
  • 保留原有引导用户授权、换取access token的全流程,仅替换后续的资源拉取、数据查询接口即可

问题1:GA4取消视图(Profiles/Views)层级后的访问逻辑

GA4将原UA的「账号→媒体资源→视图」三层结构简化为**「账号→媒体资源」**两层,移除了视图层级,所有数据查询直接绑定到媒体资源维度,媒体资源ID格式为properties/[数字ID],数字ID可直接在GA4后台媒体资源设置页查看。
你需要调整原有拉取可访问配置文件的逻辑:

  1. 拿到用户access token初始化AnalyticsAdminServiceClient后,调用listAccountSummaries接口,即可拉取当前授权用户有权限访问的所有GA4账号,每个账号对象下会直接挂载该用户有权限访问的下属媒体资源列表
  2. 前端选择逻辑调整:原有的视图选择列表,可以替换为两级选择(先选账号再选对应媒体资源),也可以直接平铺展示所有用户有权限的媒体资源、标注所属账号,用户选中目标媒体资源后,保存对应的资源ID,即可替代原来的profile ID用于后续数据查询。

问题2:流量、用户、会话类数据的接口与依赖

你需要的引荐流量、自然搜索流量、用户数、会话数数据,全部通过GA4 Data API v1beta的runReport接口拉取即可,不需要引入额外依赖,你已经下载的php-analytics-data客户端库(即示例代码中引入的BetaAnalyticsDataClient)已经覆盖所有所需能力。
相关查询字段对应关系如下:

  • 维度字段:使用sessionDefaultChannelGroup(默认渠道分组)即可直接区分自然搜索、引荐、直接流量等不同渠道流量,需要更细粒度数据可以使用sessionSourceMedium字段获取来源/媒介维度信息
  • 指标字段:sessions对应会话数,activeUsers对应活跃用户数(GA4用户统计口径为活跃用户,和原UA的Users统计口径存在差异,属于产品正常设计)

基于用户access token查询数据的示例代码如下:

// 初始化GA4数据客户端,直接传入用户授权拿到的access token
$clientConfig = [
    'credentials' => Google\ApiCore\CredentialsWrapper::build([
        'scopes' => ['https://www.googleapis.com/auth/analytics.readonly'],
        'accessToken' => $userAccessToken // 替换为实际用户的access token
    ])
];
$dataClient = new BetaAnalyticsDataClient($clientConfig);

// 执行查询
$response = $dataClient->runReport([
    'property' => 'properties/' . $selectedPropertyId, // 替换为用户选中的媒体资源数字ID
    'dateRanges' => [
        new DateRange(['start_date' => '30daysAgo', 'end_date' => 'today'])
    ],
    'dimensions' => [
        new Dimension(['name' => 'sessionDefaultChannelGroup'])
    ],
    'metrics' => [
        new Metric(['name' => 'sessions']),
        new Metric(['name' => 'activeUsers'])
    ]
]);

注意:如果你的旧版google api客户端版本过低,可以直接通过composer安装GA4官方依赖包:composer require google/analytics-admin google/analytics-data,无需手动引入源文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:12:06