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

解决Google Analytics Data的PERMISSION_DENIED认证权限不足问题

解决 PERMISSION_DENIED: Request had insufficient authentication scopes 错误

问题根源

你的代码中已正确配置权限范围,但创建AlphaAnalyticsDataClient时未使用这个配置好的凭证,客户端默认调用未授权的默认凭证,导致触发权限不足错误。

修正方案

需要通过AlphaAnalyticsDataSettings将自定义凭证传入客户端,替换原有的无参AlphaAnalyticsDataClient.create()调用:

修改后的完整代码:

// imports... //
@Slf4j
@Service
public class AnalyticsDataV4Service implements IAnalyticsDataV4Service{

    @Override
    public boolean Test() {

        try {
            FileInputStream credentialsFile = new FileInputStream("path\\to\\credentials.json");
            GoogleCredentials credentials = ServiceAccountCredentials.fromStream(credentialsFile);

            ImmutableList<String> scopes = ImmutableList.of("https://www.googleapis.com/auth/analytics.readonly");
            credentials = credentials.createScoped(scopes);

            // 核心修改:用自定义凭证构建客户端配置
            AlphaAnalyticsDataSettings settings = AlphaAnalyticsDataSettings.newBuilder()
                    .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
                    .build();

            // 使用配置好的settings创建客户端
            try (AlphaAnalyticsDataClient alphaAnalyticsDataClient = AlphaAnalyticsDataClient.create(settings)) {
                RunFunnelReportRequest request =
                        RunFunnelReportRequest.newBuilder()
                                .setProperty("property-<<my-property>>")
                                .addAllDateRanges(new ArrayList<DateRange>())
                                .setFunnel(Funnel.newBuilder().build())
                                .setFunnelBreakdown(FunnelBreakdown.newBuilder().build())
                                .setFunnelNextAction(FunnelNextAction.newBuilder().build())
                                .addAllSegments(new ArrayList<Segment>())
                                .setLimit(102976443)
                                .setDimensionFilter(FilterExpression.newBuilder().build())
                                .setReturnPropertyQuota(true)
                                .build();
                RunFunnelReportResponse response = alphaAnalyticsDataClient.runFunnelReport(request);

                log.info("Response: {}", response);

                return true;
            } catch (Exception ex) {
                log.info("Error: {}", ex.getCause());
                ex.printStackTrace();
                return false;
            }

        } catch (Exception ex){
            log.info("Error: {}", ex.getCause());
            ex.printStackTrace();
            return false;
        }
    }
}

额外检查项

  • 确认服务账号已添加到GA4属性的用户列表,且授予Viewer或更高权限(GA4后台路径:管理 > 访问权限与管理 > 访问权限 > 添加用户)。
  • 验证credentials.json文件对应正确的服务账号,且文件路径无误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:37:12