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后台媒体资源设置页查看。
你需要调整原有拉取可访问配置文件的逻辑:
- 拿到用户access token初始化
AnalyticsAdminServiceClient后,调用listAccountSummaries接口,即可拉取当前授权用户有权限访问的所有GA4账号,每个账号对象下会直接挂载该用户有权限访问的下属媒体资源列表 - 前端选择逻辑调整:原有的视图选择列表,可以替换为两级选择(先选账号再选对应媒体资源),也可以直接平铺展示所有用户有权限的媒体资源、标注所属账号,用户选中目标媒体资源后,保存对应的资源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
相关产品推荐
相关产品推荐

