Analytics Reporting API V4 Client Library for.NET

Próbuję pobrać dane z naszej instancji google analytics i chciałbym skorzystać z biblioteki klienta Analytics Reporting API V4 dla. NET ( https://developers.google.com/api-client-library/dotnet/apis/analyticsreporting/v4 ), abym mógł upiec niektóre z tych danych na stronie administracyjnej, którą zbudowaliśmy. Mam problem ze znalezieniem jakichkolwiek przykładów użycia tego kodu, a dokumentacja wydaje się być niewiarygodnie uboga. Chciałbym skorzystać z konta serwisowego, aby autoryzować, ponieważ tylko my konieczność przeglądania danych związanych z kontem analitycznym, które kontrolujemy.

Jeśli ktoś mógłby podać przykładowy kod lub wskazać mi właściwy kierunek, aby uzyskać podstawowe dane raportu za pomocą. NET api, byłoby to bardzo mile widziane

Author: Ben, 2016-04-25

2 answers

Wywołanie Google Analytics Reporting API z C# nie jest szczególnie trudne, jednak wszystkie niezbędne kroki nie wydają się być wyraźnie opisane w dokumentacji Google Analytics API. Postaram się wymienić je wszystkie tutaj. Chociaż YMMV, uważam, że te kroki są poprawne od 7/20/2016.

Możesz zacząć od utworzenia nowego projektu C#. Wykonamy do testowania aplikację konsolową o nazwie GoogleAnalyticsApiConsole. Po utworzeniu projektu dodamy odniesienie do Google Biblioteka klienta. NET przy użyciu konsoli Menedżera pakietów NuGet (znajduje się w menu Narzędzia w programie Visual Studio 2015). Uruchom konsolę i wydaj następujące polecenie w wierszu polecenia PM>:

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

Instalacja tego pakietu spowoduje pobranie bibliotek klienckich potrzebnych do wywołania usług raportowania Google Analytics wraz z szeregiem innych zależności.

Aby wywołać usługi internetowe, musisz skonfigurować OAuth 2.0 dostęp do Twojej aplikacji. Dokumentacja dla tej konfiguracji Znajduje się tutaj , ale podsumuję poniżej:

  1. Zaloguj się do konsoli Google Cloud Platform: https://console.cloud.google.com / . pamiętaj, aby zalogować się za pomocą konta, które ma dostęp do kont Google Analytics, które próbujesz odpytywać za pomocą interfejsu raportowania API.

  2. Kliknij menu Google Cloud Platform i wybierz API Manager .

Google Cloud Platform API Manager

  1. Po lewej stronie kliknij poświadczenia, a następnie utwórz nowy projekt o nazwie Google Analytics API Console. Daj mu trochę czasu na stworzenie nowego projektu.

  2. Po utworzeniu projektu kliknij ponownie poświadczenia , jeśli nie jest jeszcze zaznaczony, a następnie kliknij link OAuth Consent Screen W prawym panelu. Ustaw nazwę produktu pokazaną użytkownikom na Google Analytics API Console, a następnie kliknij Zapisz.

  3. Kliknij ponownie poświadczenia , a następnie kliknij Utwórz poświadczenia i wybierz OAuth Client ID . Wybierz Inne dla Typ aplikacji, a następnie wprowadź Google Analytics API Console jako nazwę i kliknij Utwórz.

  4. Po utworzeniu poświadczenia otrzymasz identyfikator klienta i sekret klienta. Możesz zamknąć okno dialogowe.

  5. Teraz Pod powinieneś zobaczyć wpis Pod OAuth 2.0 client ids. Kliknij ikonę pobierania po prawej stronie tego wpisu, Aby pobrać plik client_secret.json (ten plik będzie miał znacznie dłuższą nazwę). Dodaj ten plik do projektu na poziomie głównym po jego pobraniu i zmień jego nazwę na client_secret.json.

Poświadczenia API Google Cloud Platform

  1. teraz, gdy został utworzony certyfikat OAuth 2.0, musimy włączyć go do wywoływania raportującego API. Wybierz przegląd i upewnij się Google API {[41] } jest zaznaczone w prawym panelu. Wpisz Reporting w polu wyszukiwania i wybierz Analytics Reporting API V4 z listy. Na następnym ekranie kliknij Enable. Po włączeniu tego interfejsu API powinieneś być w stanie zobaczyć go pod listą Enabled API w prawym panelu.

Google Cloud Platform Enabled Analytics Reporting

Teraz, gdy stworzyliśmy nasz projekt i stworzyliśmy nasz certyfikat OAuth 2.0, nadszedł czas, aby wywołać raportowanie API V4. Kod wymienione poniżej będą używać Google API i pliku client_secret.json do tworzenia Google.Apis.Auth.OAuth2.UserCredential do zapytań API raportowania dla wszystkich sesji między podanym zakresem dat dla widoku. Kod jest zaadaptowany z przykładu Javy tutaj .

Przed wykonaniem kodu należy ustawić Build Action w pliku client_secret.json na Content oraz Copy to Output Directory na Copy if newer . Istnieją również dwie zmienne, które muszą być prawidłowo gotowi. Najpierw w metodzie GetCredential() ustaw wartość loginEmailAddress na adres e-mail użyty do utworzenia poświadczenia OAuth 2.0. Następnie w metodzie Main upewnij się, że ustawisz ViewId W Zmiennej reportRequest na widok, który chcesz odpytywać za pomocą interfejsu API raportowania. Aby znaleźć ViewId, Zaloguj się do Google Analytics i wybierz zakładkę Admin. Następnie wybierz widok, który chcesz odpytywać w menu rozwijanym View po prawej stronie i wybierz View Settings. Widok id zostaną wyświetlone w ustawieniach podstawowych .

Przy pierwszym uruchomieniu kodu wyświetli się strona internetowa z pytaniem, czy chcesz zezwolić Google Analytics API Console na dostęp do danych API. Wybierz Zezwól , aby kontynuować. Od tego momentu pozwolenie to będzie przechowywane w GoogleAnalyticsApiConsole FileDataStore. Jeśli plik zostanie usunięty, konieczne będzie ponowne przyznanie uprawnień. Plik ten można znaleźć w katalogu %APPDATA%\GoogleAnalyicsApiConsole.

Google API Permission OAuth 2.0

Proszę pamiętać, że wierzę ten scenariusz będzie odpowiadał potrzebom OP. gdyby ta aplikacja miała być rozpowszechniana wśród klientów, to najprawdopodobniej potrzebny byłby inny schemat OAuth 2.0.

Oto kod:

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"));
            }
        }
    }
}
 51
Author: rsbarro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-10 15:07:04

Miałem to samo doświadczenie: dokumentacja Google jest dość dogłębna, ale jest dość okropna w podawaniu jasnych przykładów, jak połączyć się z .NET.

Kluczową rzeczą, którą w końcu zrozumiałem, jest to, że możesz połączyć się za pomocą poświadczenia OAuth2 lub poświadczenia konta usługowego. Jeśli posiadasz konto analityczne, użyj konta usługi. Jeśli chcesz połączyć się z kontami analitycznymi innych użytkowników, użyj OAuth2.

Wydaje się być sporo przykładów w Internecie, jak uzyskać Dane API Analytics z wykorzystaniem poświadczeń OAuth2, ale posiadam swoje konto Analytics i chciałem tylko pobrać z niego dane. Wymyśliłem, jak połączyć się z API raportowania analitycznego v4 za pomocą ServiceAccountCredential, i napisałem ODPOWIEDŹ na podobne pytanie o przepełnienie stosu ze wszystkimi szczegółami.

 4
Author: John Washam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-17 02:46:12