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

UA相关Google Analytics API 2023年7月后可用性及代码适配咨询

Google UA与GA4相关技术问题及代码咨询

现有UA数据读取代码(基于Google.Apis.Analytics.v3)

private readonly AnalyticsService service;
private readonly IConfiguration _config;
private ILogger<PageViewService> _logger;

public PageViewService(IConfiguration config, ILogger<PageViewService> logger)
{
    try
    {
        _config = config;
        _logger = logger;

        var sercretFileLocation = _config["SecretFileLocation"];
        var password = _config["Password"];
        var accountEmail = _config["AccountEmail"];

        X509KeyStorageFlags storageFlag = X509KeyStorageFlags.MachineKeySet;
        var flag = _config["X509KeyStorageFlags"];
        if (flag == "UserKeySet")
        {
            storageFlag = X509KeyStorageFlags.UserKeySet;
        }
        else if (flag == "MachineKeySet")
        {
            storageFlag = X509KeyStorageFlags.MachineKeySet;
        }
        else if (flag == "Exportable")
        {
            storageFlag = X509KeyStorageFlags.Exportable;

        }
        else if (flag == "UserProtected")
        {
            storageFlag = X509KeyStorageFlags.UserProtected;

        }
        else if (flag == "PersistKeySet")
        {
            storageFlag = X509KeyStorageFlags.PersistKeySet;
        }
        else if (flag == "EphemeralKeySet")
        {
            storageFlag = X509KeyStorageFlags.EphemeralKeySet;
        }
        else if (flag == "DefaultKeySet")
        {
            storageFlag = X509KeyStorageFlags.DefaultKeySet;
        }

        var certificate = new X509Certificate2(sercretFileLocation, password, storageFlag);
        var scopes = new string[] { AnalyticsService.Scope.AnalyticsReadonly };

        var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(accountEmail)
        {
            Scopes = scopes
        }.FromCertificate(certificate));


        service = new AnalyticsService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential
        });
    }
    catch (Exception e)
    {
        _logger.LogError(e.ToString());
    }
}

public string GetPageViews(List<string> paths)
{
    string pathsString = "";
    try
    {
        var webSiteCode = _config["WebSiteCode"];
        var startDate = _config["StartDate"];

        if (webSiteCode != null && startDate != null)
        {
            pathsString = GenerateFilter(paths);

            DataResource.GaResource.GetRequest request = service.Data.Ga.Get(
               "ga:" + webSiteCode,
              startDate,
               "today",
               "ga:uniquePageviews");
            request.Filters = pathsString;

            var data = request.Execute();
            string uniquePageViews = data?.Rows?.FirstOrDefault()?.FirstOrDefault();
            return uniquePageViews;
        }
        else
        {
            return "0";
        }
    }
    catch (Exception e)
    {
        _logger.LogError($"{e.ToString()} {pathsString}");
    }
    return null; //null means there is an error.
}

背景说明

本人已于2022年4月通过GA4设置助手将UA与GA4关联,GA4自该月起已开始采集指标。现咨询以下技术问题:

  1. 上述基于Google.Apis.Analytics.v3的代码是否会在2023年7月停止工作?
  2. UA与GA4的关联设置是否不会影响上述代码的正常运行?
  3. 是否必须改用Google.Apis.AnalyticsReporting.v4包?若使用该包,采用UA的View ID在2023年7月后是否仍有效?

基于Google.Apis.AnalyticsReporting.v4的原型代码(使用UA的View ID)

static async Task Main(string[] args)
{
    
    var dateRange = new DateRange
    {
        StartDate = "2020-06-01",
        EndDate = "2020-06-30"
    };

    var dimensions = new List<Dimension>
    {
        new Dimension { Name = "ga:pagePath" },
        new Dimension { Name = "ga:pageTitle" }
    };

    var metrics = new List<Metric>
    {
        new Metric { Expression = "ga:pageViews" },
        new Metric { Expression = "ga:users" }
    };

    var reportRequest = new ReportRequest
    {
        DateRanges = new List<DateRange> { dateRange }, 
        Dimensions = dimensions,
        Metrics = metrics,
        FiltersExpression = filtersExpression,
        ViewId = "ga:12345678" 
    };

    var getReportsRequest = new GetReportsRequest
    {
        ReportRequests = new List<ReportRequest> { reportRequest }
    };

    var credential = GetGoogleCredential("C:\\Code\\PrototypeAnalytics4\\PrototypeAnalytics4\\mychuva.json");

    // Create an AnalyticsReportingService object to make the Google Analytics API call
    var analyticsService = new AnalyticsReportingService(new BaseClientService.Initializer
    {
        ApplicationName = "chuva-123",
        HttpClientInitializer = credential 
    });

    var batchGetRequest = analyticsService.Reports.BatchGet(getReportsRequest);
    var getReportsResponse = await batchGetRequest.ExecuteAsync();
    var analyticsData = getReportsResponse.Reports[0].Data;
}

static GoogleCredential GetGoogleCredential(string pathGAKey)
{
    GoogleCredential credential;
    using (FileStream stream = new FileStream(pathGAKey, FileMode.Open, FileAccess.Read, FileShare.Read))
    {
        credential = GoogleCredential.FromStream(stream); 
    }

    string[] scopes = new string[]
    {
        AnalyticsReportingService.Scope.AnalyticsReadonly
    };

    credential = credential.CreateScoped(scopes); 
    return credential;
}

问题解答

核心问题解答

  1. 基于Google.Apis.Analytics.v3的代码在2023年7月后的状态
    是的,这套代码会在2023年7月停止工作。UA(Universal Analytics)的核心服务包括v3 API在2023年7月1日正式终止支持,之后无法再通过该API获取UA数据,历史数据查询也会被停止。

  2. UA与GA4的关联对现有代码的影响
    UA与GA4的关联设置不会影响现有代码的正常运行,直到UA服务终止。关联仅用于数据同步和迁移辅助,不会改变UA本身的服务逻辑,因此2023年7月前原代码仍可正常读取UA数据。

  3. 是否必须改用Google.Apis.AnalyticsReporting.v4包及UA View ID的有效性
    Google.Apis.AnalyticsReporting.v4本质还是针对UA的API,同样会在2023年7月后停止服务,所以即使切换到这个包,使用UA View ID的方式也会失效。不需要切换到该包,应直接迁移到GA4对应的Google.Apis.AnalyticsData.v1beta API,使用GA4的Property ID获取数据。

关于AnalyticsReporting.v4原型代码的有效性

该原型代码在2023年7月后不可用,因为它依赖UA的View ID和UA相关API服务,而UA服务已终止。不需要切换到这个实现,应直接基于GA4的Data API进行开发。

内容的提问来源于stack exchange,提问作者Jeipi Oyams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:25:24