我一直在使用Google.GData.Analytics
和Google.GData.Client
通过我的网络应用程序中的Google AnalyticsAPI 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。
当我搜索谷歌时。 我搜索了很多,但找不到任何解决方案。 任何帮助或指导将不胜感激。
答案 0 :(得分:1)
已停止/关闭的客户端登录已于April 20 2015开始,可能于2015年5月26日左右完成。您无法再使用Google AnalyticsAPI的客户端登录(登录名和密码),需要切换到Oauth2。您需要更改代码才能使用Oauth2或服务帐户。
最好使用最新版本的客户端库,该库使用的是使用V2的Google Analytics V3。
如果这是您已拥有的数据,您可能需要考虑服务帐户。通过服务帐户,您可以设置对Google Analytics(分析)帐户的访问权限,并且不需要用户对您的代码进行身份验证。如果这不是您的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();