创建您的应用 https://code.google.com/apis/console/
对于您的应用程序,请打开对Google Analytics的访问权限,并为您的网站创建一个OAuth 2.0客户端ID。
浏览到:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=YOUR_APP_ID.apps.googleusercontent.com&access_type=offline&scope=https://www.googleapis.com/auth/analytics.readonly&redirect_uri=HTTP://YOUR_CALL_BACK_URL
将 YOUR_APP_ID 和 YOUR_CALL_BACK_URL 更改为相应的值。
重要的是包括 access_type=offline。
点击授权访问按钮,将重定向到 HTTP://YOUR_CALL_BACK_URL?code=THIS_IS_YOUR_CODE
。复制 URL 中的代码。
使用 CMD 提示符请求刷新令牌以获取代码。
curl -d "code=THIS_IS_YOUR_CODE&client_id=YOUR_APP_ID.apps.googleusercontent.com&client_secret=YOUR_APPS_SECRET_CODE&redirect_uri=HTTP://YOUR_CALL_BACK_URL&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token
改变
THIS_IS_YOUR_CODE,
YOUR_APP_ID,
YOUR_APPS_SECRET_CODE,
YOUR_CALL_BACK_URL 的值为相关值。
记录返回的
refresh_token。
下载最新版本的Core Reporting V3.0 .net库
http://code.google.com/p/google-api-dotnet-client/wiki/Downloads
当前版本Google.Apis.Analytics.v3.cs中存在一个错误,为了修复它,请将此文件中的代码复制到本地解决方案中(不要引用Google.Apis.Analytics.v3.bin)
http://code.google.com/p/google-api-dotnet-client/source/browse/Services/Google.Apis.Analytics.v3.cs?repo=samples&name=20111123-1.1.4344-beta
并将属性Dimensions从
List<system.string>
更改为
string
。
否则你会像我和这个人一样遇到一个错误
http://www.evolutiadesign.co.uk/blog/using-the-google-analytics-api-with-c-shar/
然后使用您的Refresh Token,在没有用户交互的情况下生成Access Token,并使用Access Token针对Google Analytics运行报告。
using System;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using AnalyticsService = Google.Apis.Analytics.v3.AnalyticsService;
class Program
{
public static void Main()
{
var client = new WebServerClient(GoogleAuthenticationServer.Description, "YOUR_APP_ID.apps.googleusercontent.com", "YOUR_APPS_SECRET_CODE");
var auth = new OAuth2Authenticator<WebServerClient>(client, Authenticate);
var asv = new AnalyticsService(auth);
var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");
request.Dimensions = "ga:pagePath";
request.Sort = "-ga:visitors";
request.MaxResults = 5;
var report = request.Fetch();
Console.ReadLine();
}
private static IAuthorizationState Authenticate(WebServerClient client)
{
IAuthorizationState state = new AuthorizationState(new string[]{}) { RefreshToken = "REFRESH_TOKEN" };
client.RefreshToken(state);
return state;
}
}