2

我一直在使用Google.GData.AnalyticsandGoogle.GData.Client 来通过我的 Web 应用程序中的 Google Analytics API v2 检索一些 Google Analytics 数据。

代码如下:

string username = "abc@gmail.com";
        string password = "myPasswordHere";
        string profileId = "ga:88376970";
        string _from = Convert.ToDateTime(dtpFrom.SelectedDate.Value.ToString()).ToString("yyyy-MM-dd");
       string _to = Convert.ToDateTime(dtpTo.SelectedDate.Value.ToString()).ToString("yyyy-MM-dd");
        AccountQuery AccountsQuery = new AccountQuery();
        service = new AnalyticsService("DoogalAnalytics");
        service.setUserCredentials(username, password);
        try
        {
            DataFeedUrl = "https://www.google.com/analytics/feeds/data";
            DataQuery PageViewQuery = new DataQuery(DataFeedUrl)
            {
                Ids = profileId ,
                Metrics = "ga:pageviews",
                Dimensions = "ga:date",
                Sort = "ga:date",
                GAStartDate = _from,
                GAEndDate = _to
            };
            StringBuilder strData = new StringBuilder();
            int maxValue = 0;
            int today = 0;
            List<int> gList = new List<int>();                
            foreach (DataEntry entry in service.Query(PageViewQuery).Entries)
            {
                var value = entry.Metrics.First().IntegerValue;
                gList.Add(value);
                maxValue = value > maxValue ? value : maxValue;
                today = entry.Metrics.Last().IntegerValue;
                strData.AppendFormat("{0},", value);
            }

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message.ToString());
        }

直到大约 5 天前,这段代码一直运行良好,过去 7 或 8 个月我一直在使用这段代码,但现在我突然面临错误

执行认证请求返回意外结果:404。

当我搜索谷歌。我搜索了很多,但找不到任何解决方案。任何帮助或指导将不胜感激。

4

1 回答 1

1

已停止/关闭的客户端登录于 2015 年4 月 20 日开始,可能在 2015 年 5 月 26 日左右完成。您不能再通过 Google Analytics API 使用客户端登录(登录名和密码),您需要切换到 Oauth2。您需要更改代码以使用 Oauth2 或服务帐户。

最好获取使用您正在使用 V2 的 Google Analytics V3 的最新版本的客户端库。

PM> Install-Package Google.Apis.Analytics.v3

如果这是您已经拥有的数据,您可能需要考虑使用服务帐户。服务帐户可让您设置对您的谷歌分析帐户的访问权限,并且不需要用户对您的代码进行身份验证。如果这不是您的 Google Analytics(分析)帐户,而实际上是另一个用户拥有的帐户,那么您将需要使用 Oauth2 并请求用户进行身份验证。

我的教程: 使用 C# 进行 Google Analytics API 身份验证

从教程上面的教程中提取的代码会保持最新,此代码可能不是:

    string[] scopes = new string[] {
            AnalyticsService.Scope.Analytics,  // view and manage your Google Analytics data
            AnalyticsService.Scope.AnalyticsEdit,  // Edit and manage Google Analytics Account
            AnalyticsService.Scope.AnalyticsManageUsers,   // Edit and manage Google Analytics Users
            AnalyticsService.Scope.AnalyticsReadonly};     // View Google Analytics Data

    String CLIENT_ID = "6.apps.googleusercontent.com"; // found in Developer console
    String CLIENT_SECRET = "xxx";// found in Developer console
    // here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
    UserCredential credential = 
            GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { 
                                                           ClientId = CLIENT_ID
                                                           , ClientSecret = CLIENT_SECRET 
                                                           }
                                                        , scopes
                                                        , Environment.UserName
                                                        , CancellationToken.None
                                                        , new FileDataStore("Daimto.GoogleAnalytics.Auth.Store")).Result;

AnalyticsService service = new AnalyticsService(new BaseClientService.Initializer()
            {
             HttpClientInitializer = credential,
             ApplicationName = "Analytics API Sample",
            });

DataResource.GaResource.GetRequest request = service.Data.Ga.Get("ga:8903098", "2014-01-01", "2014-01-01", "ga:sessions");
request.MaxResults = 1000;
GaData result = request.Execute();
于 2015-06-02T07:12:43.120 回答