GA4 API:服务账号获全权限仍报权限拒绝,求排查解决
问题解决:GA4 API调用权限范围不足异常
核心错误原因
你代码中使用的认证范围是云存储服务的权限(StorageScopes.DEVSTORAGE_FULL_CONTROL),和GA4 Analytics Data API的权限需求不匹配,这是导致PERMISSION_DENIED异常的直接原因。
修正步骤
替换正确的API权限范围
GA4 Beta Analytics Data API要求的权限范围是https://www.googleapis.com/auth/analytics.readonly,将代码中的scope部分替换为该值。修正后的完整代码
String propertyId = "123123123"; GoogleCredentials gc = ServiceAccountCredentials.fromStream(this.getClass().getResourceAsStream("/client_secrets.json")) .createScoped(Collections.singletonList("https://www.googleapis.com/auth/analytics.readonly")); BetaAnalyticsDataSettings betaAnalyticsDataSettings = BetaAnalyticsDataSettings.newBuilder().setCredentialsProvider(FixedCredentialsProvider.create(gc)).build(); BetaAnalyticsDataClient betaAnalyticsDataClient = BetaAnalyticsDataClient.create(betaAnalyticsDataSettings); RunReportRequest request = RunReportRequest.newBuilder().setProperty("properties/" + propertyId). addMetrics(Metric.newBuilder().setName("active7DayUsers")). addDateRanges(DateRange.newBuilder(). setStartDate("2023-07-31").setEndDate("today")).build(); RunReportResponse response = betaAnalyticsDataClient.runReport(request);
补充说明
- 你已确认的GUI配置(服务账号关联GA4资源、授予全管理员权限)都是正确的,无需调整;
- 替换权限范围后重新运行代码,即可正常调用GA4 API获取数据。
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

