Ответ 1
Создайте приложение https://code.google.com/apis/console/
Для вас приложение, включите доступ к Google Analytics и создайте идентификатор клиента OAuth 2.0 для своего веб-сайта.
Обзор:
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 от a List<system.string>
до a string
.
Или вы получите ошибку, как я, и этот парень сделал http://www.evolutiadesign.co.uk/blog/using-the-google-analytics-api-with-c-shar/
Затем вы можете использовать токен обновления, чтобы создать токен доступа без взаимодействия с пользователем и использовать токен доступа для запуска отчета против 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;
}
}