Подтвердить что ты не робот

Клиентская библиотека API отчетов V4 Analytics для .NET.

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

  • Выберите Облачная платформа Google и выберите Диспетчер API.

Менеджер API Google Cloud Platform

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

  2. После создания проекта снова нажмите Credentials, если он еще не выбран, а затем нажмите ссылку OAuth Consent Screen на правой панели. Установите Имя продукта, показанное пользователям, на Google Analytics API Console, а затем нажмите "Сохранить".

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

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

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

Учетные данные API Google Cloud Platform

  1. Теперь, когда учетные данные OAuth 2.0 были созданы, нам необходимо включить его для вызова API отчетов. Выберите Обзор и убедитесь, что на правой панели выбран API Google. В поле поиска введите Reporting и выберите из списка API отчетов Google Analytics V4. На следующем экране нажмите Включить. После того как этот API был включен, вы должны увидеть его в списке Enabled API на правой панели.

Сообщество Google Cloud Platform Enabled Analytics Reporting

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

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

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

Разрешение API Google 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"));
            }
        }
    }
}

Ответ 2

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

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

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