【问题标题】:Execution of authentication request returned unexpected result: 404执行认证请求返回意外结果:404
【发布时间】:2015-06-02 05:07:27
【问题描述】:

我一直在使用Google.GData.AnalyticsGoogle.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。

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

【问题讨论】:

    标签: c# .net google-api google-analytics-api google-client-login


    【解决方案1】:

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

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

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

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

    我的教程:Google Analytics API Authentication with C#

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

        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();
    

    【讨论】:

    • 您能提供一些示例工作代码吗?我对 google api 没有足够的经验,并且我之前使用的代码是从互联网上下载的......??
    • 教程daimto.com/googleanalytics-authentication-csharp 会引导你,虽然它在底部是示例项目
    • 老实说,我不知道如何得到它。?你能详细说明吗????
    • 点击链接是教程。向您展示如何做到这一点。 daimto.com/googleanalytics-authentication-csharp 除了给你一个教程和给你展示代码,你还需要多少细节?
    • 我已经尝试过本教程中的代码,但它给出了类似 AnalyticsService.Scope.Analytics,V3.AnalyticsService 不包含范围定义的错误
    猜你喜欢
    • 2015-08-26
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多