C# 执行身份验证请求返回意外结果:404

C# 执行身份验证请求返回意外结果:404,c#,.net,google-api,google-analytics-api,google-client-login,C#,.net,Google Api,Google Analytics Api,Google Client Login,我一直在使用Google.GData.Analytics和Google.GData.Client 通过我的web应用程序中的Google Analytics API v2检索一些Google Analytics数据 守则如下: string username = "abc@gmail.com"; string password = "myPasswordHere"; string profileId = "ga:88376970"; string

我一直在使用
Google.GData.Analytics
Google.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());
        }
string用户名=”abc@gmail.com";
字符串password=“myPasswordHere”;
string profileId=“ga:88376970”;
字符串_from=Convert.ToDateTime(dtpFrom.SelectedDate.Value.ToString()).ToString(“yyyy-MM-dd”);
字符串_to=Convert.ToDateTime(dtpTo.SelectedDate.Value.ToString()).ToString(“yyyy-MM-dd”);
AccountQuery AccountsQuery=新AccountQuery();
服务=新分析服务(“DoogalAnalytics”);
service.setUserCredentials(用户名、密码);
尝试
{
DataFeedUrl=”https://www.google.com/analytics/feeds/data";
DataQuery PageViewQuery=新数据查询(DataFeedUrl)
{
Ids=profileId,
Metrics=“ga:pageviews”,
Dimensions=“ga:日期”,
Sort=“ga:date”,
加斯塔特日期=_自,
GAEndDate=_至
};
StringBuilder strData=新的StringBuilder();
int maxValue=0;
int今天=0;
List gList=新列表();
foreach(service.Query(PageViewQuery.Entries)中的数据条目)
{
var value=entry.Metrics.First().IntegerValue;
增加(价值);
maxValue=value>maxValue?值:maxValue;
今天=entry.Metrics.Last().IntegerValue;
AppendFormat(“{0},”,值);
}
}
捕获(例外情况除外)
{
Response.Write(例如Message.ToString());
}
这段代码在大约5天前还运行得很好,在过去的7到8个月里我一直在使用这段代码,但是现在我突然遇到了错误

执行身份验证请求返回意外结果:404

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

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

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

如果这是您已经拥有的数据,您可能需要考虑服务帐户。服务帐户将允许您设置对google analytics帐户的访问权限,并且不需要用户验证您的代码。如果这不是您的Google Analytics帐户,而是另一个用户拥有的帐户,那么您需要使用Oauth2并请求该用户进行身份验证

我的教程:

从以上教程中删除的代码教程保持最新此代码可能不是:

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

你能提供一些示例工作代码吗?我对谷歌API没有足够的经验,我以前使用的代码是从互联网上下载的…?虽然教程的底部是示例项目,但老实说,我不知道如何获得它。?你能详细说明吗???点击链接,这是一个教程。告诉你怎么做。除了给你一个教程并向你展示你还需要多少精化?我在本教程中尝试了这些代码,但它给出了类似AnalyticsService.Scope.Analytics的错误,V3.AnalyticsService不包含范围的定义