Клиентская библиотека API V4 Analytics Reporting for.NET

Я пытаюсь получить некоторые данные из нашего экземпляра Google analytics, и я хотел бы использовать клиентскую библиотеку Analytics Reporting API V4 для .NET (https://developers.google.com/api-client-library/dotnet/apis/analyticsreporting/v4), чтобы я мог испечь некоторые из этих данных на сайт администрирования, который мы построили. У меня возникли проблемы с поиском каких-либо примеров использования этого кода, и документация кажется невероятно разреженной. Я хотел бы использовать учетную запись службы для авторизации в качестве нам нужно только просмотреть данные, связанные с учетной записью analytics, которую мы контролируем.

Если кто-нибудь может предоставить пример кода или указать мне в правильном направлении, чтобы получить некоторые основные данные отчета с помощью .net api, было бы очень признателен

2 ответов


вызов Google Analytics Reporting API из C# не особенно сложно, однако все необходимые шаги, кажется, не очень четко изложены в документации Google Analyics API. Я постараюсь перечислить их здесь. Хотя YMMV, я считаю, что эти шаги на 7/20/2016.

вы можете начать с создания нового проекта c#. Мы сделаем консольное приложение для тестирования под названием GoogleAnalyticsApiConsole. Как только проект будет создан, мы добавим ссылку на Google Analytics Reporting API V4 клиентская библиотека для .NET С помощью консоли диспетчера пакетов NuGet (находится в меню Сервис в Visual Studio 2015). Запустите консоль и введите следующую команду в PM> запрос:

PM> Install-Package Google.Apis.AnalyticsReporting.v4

установка этого пакета загрузит клиентские библиотеки, необходимые для вызова веб-служб Google Analytics Reporting, а также ряд других зависимостей.

для того чтобы вызвать сеть службы, вам нужно настроить доступ OAuth 2.0 для вашего приложения. Документация для этой установки можно посмотреть здесь, но я резюмирую ниже:

  1. войдите в Консоль Google Cloud Platform: https://console.cloud.google.com/. Не забудьте войти в систему с учетной записью, которая имеет доступ к учетным записям Google Analytics, которые вы пытаетесь запросить с помощью API отчетов.

  2. нажмите Облачная Платформа Google и выберите менеджер API.

Google Cloud Platform API Manager

  1. С левой стороны, нажмите кнопку полномочия а затем создайте новый проект под названием Google Analytics API Console. Дайте ему время, чтобы создать новый проект.

  2. после создания проекта нажмите полномочия еще раз, если он еще не выбран, а затем нажмите кнопку Экран Согласия OAuth ссылка в правой панели. Установите название продукта, показанное пользователям to Google Analytics API Console и нажмите кнопку Сохранить.

  3. клик полномочия еще раз, а затем нажмите Создать Учетные Данные и выбрать идентификатор клиента OAuth. Выберите другое на тип приложения и затем введите Google Analytics API Console как имя и нажмите создать.

  4. после создания учетных данных вам будет предоставлен идентификатор клиента и секрет клиента. Диалоговое окно можно закрыть.

  5. , под полномочия вы должны увидеть запись под идентификаторы клиентов OAuth 2.0. Нажмите значок загрузки справа от этой записи, чтобы загрузить client_secret.json file (этот файл будет иметь гораздо более длинное имя). Добавить этот файл в проект в корневой уровень после того, как он был загружен и переименовать его в client_secret.json.

Google Cloud Platform API Credentials

  1. теперь, когда учетные данные OAuth 2.0 были созданы, нам нужно включить его для вызова API отчетов. Выберите обзор и убедится Google Api выбирается на правой панели. Типа в Reporting в поле поиска и выберите аналитика отчетности API V4 из списка. На следующем экране, нажмите включить. Как только этот API будет включен, вы сможете увидеть его под Включен API-Интерфейсов список в правой панели.

Google Cloud Platform Enabled Analytics Reporting

теперь, когда мы создали наш проект и создали наши учетные данные OAuth 2.0, пришло время вызвать API отчетов V4. Код, указанный ниже, будет использовать API Google и создать Google.Apis.Auth.OAuth2.UserCredential для запроса API отчетов для всех сеансов между заданный диапазон дат для представления. Код адаптирован из пример Java здесь.

перед выполнением кода обязательно установить Создать Действие на до контент и копировать в выходной каталог параметр копировать, если новее. Есть также две переменные, которые необходимо правильно установить. Во-первых, в GetCredential() метод, установленный в loginEmailAddress значение адреса электронной почты, используемого для создайте учетные данные OAuth 2.0. Затем, в Main метод, обязательно установите ViewId на reportRequest переменная представления, которое требуется запросить с помощью API отчетов. Чтобы найти ViewId, войдите в Google Analytics и выберите Admin tab. Оттуда выберите представление, которое вы хотите запросить в посмотреть выпадающий список справа и выберите Параметры Просмотра. The просмотр ID будет отображаться под базовый Настройки.

при первом выполнении кода появится веб-страница с запросом, хотите ли вы разрешить Google Analytics API Console чтобы иметь доступ к данным API. Выберите разрешить продолжить. С этого момента это разрешение будет храниться в GoogleAnalyticsApiConsole FileDataStore. Если этот файл будет удален, то разрешение необходимо будет предоставить снова. Этот файл можно найти в папке .

Google API Permission OAuth 2.0

обратите внимание, что Я верю, что этот сценарий удовлетворит потребности ОП. Если это приложение будет распространяться среди клиентов, то, скорее всего, потребуется другая схема OAuth 2.0.

вот код:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Google.Apis.AnalyticsReporting.v4;
using Google.Apis.AnalyticsReporting.v4.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Util.Store;

namespace GoogleAnalyticsApiConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var credential = GetCredential().Result;
                using(var svc = new AnalyticsReportingService(
                    new BaseClientService.Initializer
                    {
                        HttpClientInitializer = credential,
                        ApplicationName = "Google Analytics API Console"
                    }))
                {    
                    var dateRange = new DateRange
                    {
                        StartDate = "2016-05-01",
                        EndDate = "2016-05-31"
                    };
                    var sessions = new Metric
                    {
                        Expression = "ga:sessions",
                        Alias = "Sessions"
                    };
                    var date = new Dimension { Name = "ga:date" };

                    var reportRequest = new ReportRequest
                    {
                        DateRanges = new List<DateRange> { dateRange },
                        Dimensions = new List<Dimension> { date },
                        Metrics = new List<Metric> { sessions },
                        ViewId = "<<your view id>>"
                    };
                    var getReportsRequest = new GetReportsRequest {
                        ReportRequests = new List<ReportRequest> { reportRequest } };
                    var batchRequest = svc.Reports.BatchGet(getReportsRequest);
                    var response = batchRequest.Execute();
                    foreach (var x in response.Reports.First().Data.Rows)
                    {
                        Console.WriteLine(string.Join(", ", x.Dimensions) +
                        "   " + string.Join(", ", x.Metrics.First().Values));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        static async Task<UserCredential> GetCredential()
        {
            using (var stream = new FileStream("client_secret.json", 
                 FileMode.Open, FileAccess.Read))
            {
                const string loginEmailAddress = "<<your account email address>>";
                return await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    new[] { AnalyticsReportingService.Scope.Analytics },
                    loginEmailAddress, CancellationToken.None, 
                    new FileDataStore("GoogleAnalyticsApiConsole"));
            }
        }
    }
}

У меня был тот же опыт: документация Google довольно глубокая, но довольно ужасная, давая четкие примеры того, как подключиться .Сеть.

одна ключевая вещь, которую я наконец понял, заключается в том, что вы можете подключиться с помощью учетных данных OAuth2 или учетной записи службы. Если у вас есть учетная запись Analytics, используйте учетную запись службы. Если вам нужно подключиться к учетным записям аналитики других пользователей, используйте OAuth2.

есть немало примеров онлайн как получить данные API Analytics с помощью учетных данных OAuth2, но я владею своей учетной записью Analytics и просто хотел извлечь из нее данные. Я выяснил, как подключиться к API Analytics Reporting V4 с помощью ServiceAccountCredential и я писал ответ на аналогичном вопросе переполнения стека со всеми деталями.